2013-04-18 2 views
0

많은 유사한 질문을 한 후에는 아무런 문제가 없었지만 여기에 내 자신의 질문을 넣었습니다.비트 맵 데이터를 사용하여 BufferedImage를 만드는 방법

스윙 응용 프로그램에 이미지를 표시해야합니다. 이미지 소스는 MS SQL 서버에서 검색된 비트 맵 데이터입니다. 다음과 같은 방법을 시도했습니다.

TRY 1 - 검색 한 바이트에서 ImageIcon을 만들려고했습니다. 결과가 없습니다.

TRY 2 - .png 파일에 바이트를 저장하고로드 시도 : ImageIO. 내 로컬 컴퓨터에서 제대로 작동하지만 테스트 서버에서는 실패합니다. 둘 다 Windows 머신입니다.

TRY3 - 2 단계에서 .png가 아닌 다른 형식으로 저장하려고했습니다. 그것은 전혀 작동하지 않습니다.

제가 누락 된 부분을 알려주십시오.

참고 : jai jars를 참조 라이브러리에도 포함시켜 보았습니다.

+0

나는 Durandal의 도움으로 문제를 해결했습니다. JAI를 대상 시스템에 설치할 수있는 권한이 없으므로 JAI를 사용하여 직접 이미지를 만들어야했습니다. 'PlanarImage planar = JAI.create ("stream", SeekableStream.wrapInputStream (inputStream, true));' 가야할 길입니다. 그런 다음 'planar.getAsBuffredImage()'를 사용하여 표시하십시오. –

답변

0

데이터의 형식을 데이터베이스에 저장해야합니다. 그렇지 않다면 ImageIO 으로 처리 할 수 ​​있습니다.

데이터를 파일에 쓰지 않아도됩니다 (그 자체가 함정 인 어디에을 쓰겠습니까? 제한된 프로세스 권한 및 디스크 할당량을 생각해보십시오). 데이터를 직접 액세스하는 InputStream (예 : java.io.ByteArrayInputStream)을 작성하면 스트림 기반 메소드를 사용하여 직접 ImageIO를로드 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 이미지는 _image_ 유형으로 데이터베이스에 저장됩니다. 데이터를 보면 큰 16 진 정수입니다. 나는 바이트로 데이터를 읽고있다. 다른 방법을 시도해야합니까? 내가 언급 한 방식대로 시도했다. 아직 결과가 없습니다. 데이터베이스에서 데이터를 읽는 중 틀 렸습니다. (!?) –

+0

MS-SQLServer의 "IMAGE"유형 열은 그래픽 이미지와 아무 관련이 없습니다. 이미지는 바이너리 용 BLOB 타입이며 모든 종류의 바이너리 데이터를 포함 할 수 있습니다. ImageIO가 모든 이미지를 처리 ​​할 수없는 경우 실패한 파일을 수동으로보고 4 바이트의 파일을 체크 아웃 할 수 있습니다. 일반적으로 파일의 형식을 추측 할 수있는 마법 번호가 들어 있습니다 (http : // www. astro.keele.ac.uk/oldusers/rno/Computing/File_magic.html에는 일반적인 마술 번호 목록이 있습니다.) 파일 중 일부가 이미지가 아니거나 ImageIO에서 지원하지 않는 일반적인 형식이 아닌 것 같습니다. – Durandal

+0

내가 제공 한 링크를 확인했는데 리틀 엔디안 인텔 TIFF 형식입니다. 예,이 이미지 열에는 항상 이미지 데이터가 있습니다. 모든 이미지 데이터는 '49492a00'으로 시작합니다. tiff 형식은 ImageIP API에서 기본적으로 지원되지 않습니다. 대부분의 경우 추가 정보로 파일 형식의 이미지 데이터가 있지만 JAI를 내 라이브러리에 포함 한 후에도 해당 이미지를 읽을 수는 없습니다. –