gpt4 book ai didi

java - 如何将彩色图像转为纯黑白图像(0-255格式)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:34:42 28 4
gpt4 key购买 nike

public class BlackWhite {

public static void main(String[] args)
{
try
{
BufferedImage original = ImageIO.read(new File("colorimage"));
BufferedImage binarized = new BufferedImage(original.getWidth(), original.getHeight(),BufferedImage.TYPE_BYTE_BINARY);

int red;
int newPixel;
int threshold =230;

for(int i=0; i<original.getWidth(); i++)
{
for(int j=0; j<original.getHeight(); j++)
{

// Get pixels
red = new Color(original.getRGB(i, j)).getRed();

int alpha = new Color(original.getRGB(i, j)).getAlpha();

if(red > threshold)
{
newPixel = 0;
}
else
{
newPixel = 255;
}
newPixel = colorToRGB(alpha, newPixel, newPixel, newPixel);
binarized.setRGB(i, j, newPixel);

}
}
ImageIO.write(binarized, "jpg",new File("blackwhiteimage") );
}
catch (IOException e)
{
e.printStackTrace();
}
}

private static int colorToRGB(int alpha, int red, int green, int blue) {
int newPixel = 0;
newPixel += alpha;
newPixel = newPixel << 8;
newPixel += red; newPixel = newPixel << 8;
newPixel += green; newPixel = newPixel << 8;
newPixel += blue;

return newPixel;
}
}

我得到一张黑白输出图像,但在缩放图像时我发现了一些灰色区域。我希望输出图像只包含黑色或白色。

请让我知道我目前的做法是正确的还是不正确的?如果我是,请建议另一种方式。

最佳答案

您正在将图像从彩色正确转换为黑白;但是,当您将输出保存为 JPEG 时,由于 lossy compression 而创建了一些颜色。 .

只需将输出保存为 PNG(或 JPEG 以外的任何格式),输出将仅为黑白,如您所料。

ImageIO.write(binarized, "png",new File("blackwhiteimage") );

例如,如果您有一个保存为 PNG 的二进制图像,则直方图可能类似于(仅限黑白像素):

PNG histogram

对于同一张图片,如果您保存为 JPEG,您可以看到在直方图中,白色和黑色附近的一些像素开始出现

JPEG histogram

关于java - 如何将彩色图像转为纯黑白图像(0-255格式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14851049/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com