자바

2012-12-26 4 views
1

가능한 중복 BGR 데이터에 바이트 배열에 저장 JPG 데이터를 변환하는 방법 : '
Getting pixel data from an image using java자바

이미 꽤 많은 시간 동안 웹을 검색하고, 그러나 didn를 어떤 적합한 대답을 찾으면 여기 누군가가 나를 도울 수 있다면 매우 행복 할거야 :)

나는 JPEG로 인코딩 된 이미지 데이터로 가득 찬 바이트 배열을 가지고있다. 이제 데이터를 이미지의 해당 BGR 데이터로 변환하고 바이트 배열에도 저장하는 방법을 알고 싶습니다.

미리 감사드립니다. 귀하의 도움은 정말로 감사하겠습니다!

+3

* 검색 용어를 사용 하였다 무엇 * "난 이미 꽤 많은 시간 동안 웹을 탐색했다"? 상위 3 개 히트는 무엇입니까? 그 히트 곡이 부적절한 이유는 무엇입니까? –

+0

실제로 BGR은 무엇입니까? –

+0

청색, 녹색, 빨간색. 색상 데이터의 이름을 지정하는 가장 일반적인 방법은 RGB입니다. –

답변

1

이 작업을 시도 할 수 :

ByteArrayInputStream input = new ByteArrayInputStream(byteArray); 
    ByteArrayOutputStream output = new ByteArrayOutputStream(); 
    BufferedImage image = ImageIO.read(input); 
    ImageIO.write(image, "bmp", output); 
    byte[] outputBytes = output.toByteArray(); 
+0

감사합니다. 나는 사무실에있을 때 그것을 시도 할 것입니다. "중간 단계"가없는 솔루션에 대해서도 감사 할 것입니다. 특히 BMP 헤더 및 정보 부분을 없애기 위해 몇 가지 추가 단계를 추가해야하는 Bitmap이 없기 때문입니다. – Blahnik

+0

@Blahnik : BufferedImage ([like this] (http : // stackoverflow.))에서 직접 데이터를 추출 할 수 있어야합니다.(예 : com/a/8631366 /)), 원하는 유형 (TYPE_INT_BGR 또는 TYPE_3BYTE_BGR)이 올바른 유형이 아닌 경우이를 변환해야 할 수도 있습니다 (예 : 원하는 크기의 새 BufferedImage를 작성하여 type.getGraphics(). drawImage()를 호출). –

+0

@ 길버트 르 블랑 : 감사합니다. 기본적으로 작동합니다. 또한 Ilmari가 준 링크는 RGB 데이터를 얻는데 아주 유용했습니다. 아직 내가별로 행복하지 않은 유일한 사실은 전환에 필요한 시간이 상당히 길다는 것입니다. bufferedImage = ImageIO.read (inputStream) 행에는 약 80ms, bufferedImage.getRGB (0,0, width, height, Array, width) 행에는 약 100ms가 걸립니다. 듀얼 코어 3GHz 및 4GB 램을 사용 중이며 2MP 이미지를 처리 ​​중입니다. 속도를 향상시킬 방법이 있습니까? 감사! – Blahnik