【发布时间】:2016-05-10 14:48:36
【问题描述】:
我需要像素化缓冲图像的一部分。我尝试从How can I pixelate a jpg with java? 修改代码,但是这是为整个图像设计的,似乎不适用于特定部分(我只是将黑色图像输出为黑色)
Raster src = bufferedImage.getData();
WritableRaster dest = src.createCompatibleWritableRaster();
for (int y = pixelateSection.y; y < src.getHeight(); y += PIX_SIZE) {
for (int x = pixelateSection.x; x < src.getWidth(); x += PIX_SIZE) {
double[] pixel = new double[3];
pixel = src.getPixel(x, y, pixel);
for (int yd = y; (yd < y + PIX_SIZE) && (yd < dest.getHeight()); yd++) {
for (int xd = x; (xd < x + PIX_SIZE) && (xd < dest.getWidth()); xd++) {
dest.setPixel(xd, yd, pixel);
}
}
}
}
bufferedImage.setData(dest);
return bufferedImage;
预期结果:
【问题讨论】:
-
代码看起来正确。向我们展示更多您的计划。
pixelateSection的初始值是多少? -
在循环之前尝试
dest.setRect(src);。 -
你还没试过这个
标签: java bufferedimage java-2d javax.imageio