gpt4 book ai didi

java - 在java中扫描图像以获得特定像素颜色

转载 作者:行者123 更新时间:2023-11-29 03:50:11 25 4
gpt4 key购买 nike

我正在做一个项目,对 Java 还是个新手。我想逐像素扫描图像以获取某种颜色,即青色,然后打印该像素颜色的坐标。代码运行,创建一个输出文件但不写入任何内容。有人可以帮我找出错误吗?我还想知道如何使用相同的代码在 java 中读取 .tiff 文件。

Java 代码:

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.imageio.ImageIO;

public class GetPixelColor {

//int y, x, tofind, col;
/**
* @param args the command line arguments
* @throws IOException
*/
public static void main(String args[]) throws IOException {
try {
//read image file
File file1 = new File("E:\\birds.jpg");
BufferedImage image1 = ImageIO.read(file1);

//write file
FileWriter fstream = new FileWriter("E:\\pixellog1.txt");
BufferedWriter out = new BufferedWriter(fstream);

//color object
//Color cyan = new Color(0, 255, 255);

//find cyan pixels
for (int y = 0; y < image1.getHeight(); y++) {
for (int x = 0; x < image1.getWidth(); x++) {

int c = image1.getRGB(x,y);
Color color = new Color(c);

//int red = (c & 0x0000FFFF) >> 16;
//int green = (c & 0x0000FFFF) >> 8;
//int blue = c & 0x0000FFFF;

//if (cyan.equals(image1.getRGB(x, y)){

if (color.getRed() < 30 && color.getGreen() > 255 && color.getBlue() > 255) {
out.write("CyanPixel found at=" + x + "," + y);
out.newLine();

}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

最佳答案

问题可能是您的 birds.jpg 图像不包含恰好为 r=0、g=255、b=255(即青色)的像素。即使您在“画图”中打开图像并绘制青色像素,保存时颜色也可能会略有改变,因为 JPEG 是一种有损格式。

您可以通过将 if 语句替换为以下内容来尝试测试接近青色的像素:

Color c = new Color(image1.getRGB());
if (c.getRed() < 30 && c.getGreen() > 225 && c.getBlue() > 225) {

关于java - 在java中扫描图像以获得特定像素颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9147653/

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