2012-11-04 2 views
0

getRGB()를 사용하고 나서 픽셀 색상이 빨강 또는 녹색 또는 파랑 구성 요소 (회색 이미지와 같기 때문에 중요하지 않음)를 얻고 결과를 비교하면 MS Paint Eyedropper 결과, 그 다른 것들. 여기 getRGB() 결과가 MS 그림판 스포이드에서받은 결과와 일치하지 않습니다.

import java.awt.Color; 
import java.awt.color.ColorSpace; 
import java.awt.image.BufferedImage; 
import java.awt.image.ColorConvertOp; 
import java.io.File; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

import javax.imageio.ImageIO; 

public class Separator { 

BufferedImage inputImg; 

private int _inpupImgWidth; 
private int _inpupImgHeight;     

public Separator(){ 

    try { 
     inputImg = ImageIO.read(new File("inputImg.bmp")); 
     _inpupImgWidth = inputImg.getWidth(); 
     _inpupImgHeight = inputImg.getHeight(); 


    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    System.out.println(getGrayPixelData(60, 44)); 
    try { 
     ImageIO.write(inputImg, "BMP", new File("outputImg.bmp")); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 

public void getGrayPixelData(int x, int y){ 
    Color myColor = new Color(inputImg.getRGB(x, y));  
    System.out.println("Red: " + myColor.getRed()); 
    System.out.println("Green: " + myColor.getGreen()); 
    System.out.println("Blue: " + myColor.getBlue()); 
    } 

public static void main(String[] args) { 
    new Separator(); 
    System.out.println("The End"); 
} 
} 

제가

http://postimage.org/image/t6tvlv941/
+1

* "여기 내가 사용하는 이미지의 링크입니다."*이 효과를 20Kb 미만의 이미지에서 재현 할 수 있습니까? (500Kb를 초과하는 이미지와 반대로)? –

답변

0

이미지는 그레이 스케일 모드를 사용하여 이미지의 링크이다.

그레이 스케일 값을 R, G, B로 변환하는 방법은 상당히 임의적입니다.

순진한 방법은 R, G 및 B 구성 요소 각각에 동일한 그레이 스케일 값을 할당하는 것입니다.

보다 정교한 방법은 다른 구성 요소에 대한 눈의 감도를 고려하거나 모니터 또는 다른 디스플레이 장치의 프로필을 고려하는 일부 변환을 사용하는 것입니다.

분명히 Java와 프로그램이 서로 다른 변환을 사용하고 있습니다. 그러나 두 경우 모두 정확한 R, G 및 B 값은 본질적으로 의미가 없습니다. 원본 데이터는 R, G, B 형식이 아닙니다.

+0

다른 모든 이미지에서 페인트 및 프로그램에서 RGB에 대해 동일한 결과를 얻습니다. 문제는이 특정 그림에서만 발생합니다. 설명해 주시겠습니까? – Neo

+0

적어도 다른 이미지를보고 MS Paint에서 사용하는 변환 알고리즘을 보지 않고도 정확한 세부 정보를 설명 할 수는 없습니다. 하지만 존재하지 않는 "문제"를 발명 한 것처럼 보입니다. MS Paint가 Java 나 다른 프로그램이나 라이브러리와 똑같은 방법으로 그레이 스케일 값을 RGB로 변환 할 필연적 인 필요성은 없습니다. –

관련 문제