2009-07-31 4 views
13

간단하게 들릴까요? 사용바이트 배열을 Java 이미지로 변환 - 형식을 알지 못해

ImageIO.read(new ByteArrayInputStream(bytes)); 

여기 주름이 있습니다. 어떤 이유로 그것은 BMP로 JPEG를 감지하고, 내가

ImageInputStream iis = ImageIO.createImageInputStream(new ByteArrayInputStream(bytes)); 
Iterator<ImageReader> readers=ImageIO.getImageReaders(iis); 

이 손상된 나올 수있는 이미지를 일으키는 호출 할 때 그 반환 된 첫 번째 ImageReader를합니다. 헤더에 대한 바이트를 직접보고 부족한 자바를 통해 말할 수있는 방법이 있습니까, 그리고 그 사람은 다른 이미지에 대한 바이트 헤더에 대한 좋은 참조를 알고 실패합니까?

내가 아직도이 문제를 해결하고 있음을 알리고 있습니다. 내가 대답 할 수있는 경우 알려 드리겠습니다. 지금까지 귀하의 답변에 대해 모두 감사드립니다.

답변

5

This page은 마법의 시작점 일 수 있습니다. Here은 Wikipedia와 비슷한 것입니다.

3

한동안 ImageIO를 사용 해본 적이 없지만 테스트하지는 못했지만이 작업과 같은 것을 떠 올릴 수 있습니다. (당신이 당신의 파일이 jpg이고 비트 맵이 아니라는 것을 알기 때문에, 그 정보를 사용하여 올바른 로더를 찾는다.)

String inFormat = "jpg"; 

Iterator inReaders = ImageIO.getImageReadersByFormatName(inFormat); 

... 

nextInReader.setInput(iis); 
+0

맞습니다.하지만 문제는 데이터 수집이 bmp, png, jpg 등이 혼합되어 있다는 것입니다. 따라서이 중 어떤 것이 유효 할 수도 있습니다. 따라서이 트릭은 바이트를 기반으로하는 것이 무엇인지 알려주고 있습니다. – PHeath

0


는 BMP 리더 getImageReaders()에 의해 반환 된 하나인가? 어쩌면 당신은 둘 이상을 얻고 그것에 근거하여 선택을 할 수 있습니다.

관련 문제