java - 如何使用 JavaFX 对图像进行像素化?
问题描述
我想用 JavaFx 对图像进行像素化。我的问题是我最后只有一个写入像素,所以它只能工作一次。
我试过了
这是我的代码:
Image img = imgView.getImage();
PixelReader pixelReader = img.getPixelReader();
WritableImage wImage = new WritableImage(
(int) img.getWidth(),
(int) img.getHeight());
PixelWriter pixelWriter = wImage.getPixelWriter();
for (int y = 1; y < img.getHeight(); y += 3) {
for (int x = 1; x < img.getWidth(); x += 3) {
Color px = pixelReader.getColor(x, y);
float red = (float) px.getRed();
float green = (float) px.getGreen();
float blue = (float) px.getBlue();
Color all = new Color(red / 3, green / 3, blue / 3, 1);
for (int u = 0; u <= 3; u++) {
for (int i = 0; i <= 3; i++) {
pixelWriter.setColor(u, i, all);
}
}
}
}
解决方案
只需检查设置颜色的部分:
for (int u = 0; u <= 3; u++) {
for (int i = 0; i <= 3; i++) {
pixelWriter.setColor(u, i, all);
}
}
如您所见,您始终将像素的颜色设置为 (0,0) - (3,3)。你需要使用
pixelWriter.setColor(x + u, y + i, all);
但是,您需要确保不会尝试设置图像外部某些像素的颜色。通过 x、y、u 和 i 检查循环的边界。
推荐阅读
- android - Android RecyclerView - 父视图窃取具有负越界放置的网格项的子项的触摸事件
- c# - NLog 数据库目标不适用于已识别的 Stackify 目标
- python - Django - 如何为models.DateField()设置日期格式?终端不断抛出日期验证错误
- powershell - Powershell:在 Win 10 上查找所有已安装的应用程序
- python - 如何抓取具有嵌套表的表?
- dji-sdk - Gimbal Rotation - 在旋转完成之前触发 withCompletion 方法
- python - 递归查找列表列表中的最小值
- swift - 在 ForEach 迭代中将数据传递到自定义视图 (SwiftUI)
- c# - HttpWebRequest StreamReader 失败,出现 utf-8 is not a supported encoding name 错误
- java - 未显示覆盖私有方法错误