저는 프로젝트에서 작업 중이며 Java에 새로운 것이 아닙니다. 특정 색상 (예 : 시안)에 대해 픽셀 단위로 이미지를 스캔하고 해당 픽셀 색상의 좌표를 인쇄하려고합니다. 코드가 실행되고 출력 파일을 만들지 만 아무 것도 쓰지 않습니다. 오류를 찾으려면 누군가 도와주세요. 또한 동일한 코드를 사용하는 동안 java에서 .tiff
파일을 읽는 방법을 알고 싶습니다.자바에서 특정 픽셀 색상의 이미지를 스캔합니다.
자바 코드 :
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();
}
}
}
이미지에 청록색 픽셀이 있습니까? 그런데 첫 번째 픽셀을 찾은 후에 파일을 닫을 경우 루핑을 중단해야합니다. 두 번째 픽셀을 발견하면 쓰기를 시도 할 때'out '이 이미 닫혀 있기 때문에 IOException이 발생합니다. –
['Zoom'] (http://stackoverflow.com/a/3742841/230513)을 사용할 수 있습니다.)를 사용하여 데스크탑의 모든 픽셀의 RGB 구성 요소를 볼 수 있습니다. – trashgod
당신은 _cyan_와 같은 색을 찾고 _cyan_ –