java - 将灰度值从 .csv 转换为 BufferedImage

标签 java png bufferedimage javax.imageio

我正在尝试使用 BufferedImage 将包含灰度值的 .csv 文件转换为图像。 csv 最初被读入 pixArray[],其中所有值都是 double 。

我正在尝试使用 BufferedImage 通过代码创建 100x100px 输出图像

                BufferedImage image = new BufferedImage(width,height,BufferedImage.
                    TYPE_BYTE_GRAY);
            for(int x = 0; x < width; x++)
            {
                for(int y = 0; y < height; y++)
                {
                    image.setRGB(x, y, (int)Math.round(pixArray[y]));
                }
            }

            File file_out = new File("output.png");
            try {
                ImageIO.write(image, "png", file_out);
            } catch (IOException e) {
                e.printStackTrace();
            }

但我的输出只是一个 100x100 的黑色方 block 。

我尝试了 TYPE_BYTE_GRAY 的替代方案,以及 outout 的 png 格式,但没有成功,但找不到产生此错误的原因。

最佳答案

应该是

int g = (int)Math.round(pixArray[y]); 
image.setRGB(x,y,new Color(g,g,g).getRGB());  

您当前的代码正在执行的操作是将 alpha 设置为像素值,但将颜色分量保留为零。

关于java - 将灰度值从 .csv 转换为 BufferedImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47719357/

相关文章:

java - Java 如何检查是否过时

java - Google App Engine 数据存储远程集成

iphone - 为什么在 iPhone 或 iPad 设备上时 png 格式会发生变化

java - 如何获取JPanel的子图像?

java - 缩放后,如果没有不相关的 imageIcon,图像将不会显示

java - 输出小数点后2位数字

在 Android Studio 中运行 Android 应用程序时出现 Java 堆空间错误

macos - 在 Mac 上使用命令行创建 PNG/JPG 文件

path - VS Code - 将图像从资源管理器 Pane 拖到 markdown 文件中并作为路径放置

java - 旋转图像而不将整个图像保存在内存中