我正在使用 java 处理图像。 我读取了一个灰度图像并将像素值转换为 0 和 1 我只为一些图像正确地得到了输出图像。 在其他一些图像部分丢失 这是我用来使图像数组变回图像的代码
`BufferedImage I = ImageIO.read(new File("path"));
SampleModel sampleModel;
Raster pixelData;
pixelData = I.getData();
int[][] pixels=new int[wid][hgt];
sampleModel=pixelData.getSampleModel();
BufferedImage image=new BufferedImage(wid,hgt,BufferedImage.TYPE_BYTE_BINARY);
WritableRaster raster=Raster.createWritableRaster(sampleModel,new Point(0,0));
for(int i=0;i<wid;i++)
{
for(int j=0;j<hgt;j++)
{
raster.setSample(i,j,0,pixels[i][j]);
}
}
image.setData(raster);
File output=new File("path");
ImageIO.write(image,"png",output);
System.out.println("..End..");`
图像的大小与原始图像相同,但整个尺寸仅包含原始图像的一部分。你能帮我吗
最佳答案
您的问题可能与您使用的示例模型有关。示例模型负责描述栅格将如何存储数据,也许您正在使用一个模型,每个像素放置更多信息,然后图像仅获得原始缓冲区的一部分。
干杯
[更新] @Joop Egen 是正确的,您需要使用图像中的示例模型,您在其中定义了您正在使用每像素“配置”的灰度字节
关于java - 在 java 中将像素值从灰度设置为 0 和 1 时丢失图像部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20766572/