java - 在 java 中将像素值从灰度设置为 0 和 1 时丢失图像部分

标签 java image bufferedimage

我正在使用 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/

相关文章:

ios - CIContext初始化崩溃

java - 从 YBR_FULL Dicom 图像创建 BufferedImage

java - 为什么 getClass().getName() 对未打开的模块类起作用?

javascript - 输入表格可选图像

java - 尝试在 Rails Heroku 应用程序上安装 Java

PHP:创建裁剪矩形缩略图

java - 设置 BufferedImage 的单个像素会在另一个 BufferedImage 中设置相同的像素。为什么?

JAVA: getRGB() 从透明像素返回什么值?

java - Quarkus、Hibernate ORM 和 REST - RESTEASY008200 : JSON Binding deserialization error:

java - 使用 BlueMix 尝试将 JSON 数据插入 Cloudant 数据库,而无需在 Java 中对文件格式进行硬编码