【发布时间】:2018-04-08 02:31:02
【问题描述】:
我有一个表示像素灰度强度值的二维整数数组:
0 255 0 255 0 255 0 255 0 255
0 255 0 255 0 255 0 255 0 255
0 255 0 255 0 255 0 255 0 255
0 255 0 255 0 255 0 255 0 255
0 255 0 255 0 255 0 255 0 255
0 255 0 255 0 255 0 255 0 255
0 255 0 255 0 255 0 255 0 255
0 255 0 255 0 255 0 255 0 255
0 255 0 255 0 255 0 255 0 255
0 255 0 255 0 255 0 255 0 255
很明显,有 5 条垂直线一旦转换为图像就会变成黑色。 但是,我的最终图像有 5 条水平线。我不明白为什么我得到黑色水平线,而不是垂直线。将 pixel[i][j] 更改为 pixel[j][i] 会产生垂直线,但这不是我想要的。我想知道为什么我的图片有 5 条水平黑线,而我的像素值有 5 条垂直黑线。
这是我的代码:
public static void main(String[] args) throws IOException {
BufferedImage image = null;
SampleModel sm = null;
WritableRaster writeRaster = null;
Raster raster = null;
int[][] pixel = new int[10][10];
// containing only white pixels in an image
for (int i = 0; i < 10; i++)
for(int j = 0; j < 10; j++)
pixel[i][j] = 255;
printPixels(pixel);
// make black vertical lines by changing intensity value
for (int i = 0; i < 10; i++)
for(int j = 0; j < 10; j+=2)
pixel[i][j] = 0;
printPixels(pixel);
image = new BufferedImage(10, 10, BufferedImage.TYPE_BYTE_GRAY);
raster = image.getData();
sm = raster.getSampleModel();
writeRaster = Raster.createWritableRaster(sm, new Point(0, 0));
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
writeRaster.setSample(i, j, 0, pixel[i][j]);
}
}
image.setData(writeRaster);
writeFile(image, "modified.gif");
}
}
【问题讨论】:
-
不同的坐标系。
-
setSample在x/y坐标系中 -
“将 pixel[i][j] 更改为 pixel[j][i] 会产生垂直线,但这不是我想要的。” 为什么不呢?