灰度图像

3

我在使用Java保存灰度图像时遇到了问题。如何解决呢?格式并不是很重要,但不能进行图像压缩。

有人知道吗?

1个回答

3
这可能不是最优雅的方法,但它能够运行。
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;


public class ImageTest {


    public static void main(String[] args) throws IOException {

        int width = 10 // width of your image
        int height = 10 // height of your image

        BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);


        for (int x = 0; x < width; ++x)
        {
            for (int y = 0; y < height; ++y)
            {
                int grayscale = ... // get your greyscale value 0..255 from your array here.
                int colorValue = grayscale | grayscale << 8 | grayscale << 16;
                img.setRGB(x, y, colorValue);
            }

        }

        ImageIO.write(img, "png", new File("output.png"));
    }

}

colorValue由r、g和b组成(最低字节为b,其前面为g,再前面为r)。由于您的图像是灰度的,因此您可以简单地使用相同的r、g和b值来处理您的图像,这就是为什么您可以简单地执行以下操作:

int colorValue = grayscale | grayscale << 8 | grayscale << 16;

1
对于这种 RGB 操作,以下符号更为常见(我认为更容易理解“引擎盖下”的情况):gray << 16 | gray << 8 | gray - SyntaxT3rr0r
好的,说得对,这样更容易理解了。我已经调整了我的例子。 - amarillion
只有一个注意事项,如果您需要Alpha通道,则应使用TYPE_INT_ARGB,并使用shift<<24来调整阿罗哈字节。(我认为这可能很有用,因为您正在保存png文件) - mohdajami

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接