2013-06-10 4 views
0

Java Advanced Imaging API의 도움으로 원시 이미지 데이터의 바이트 []를 하드 드라이브의 .tiff 파일에 저장하려고합니다. 웹상에 사소한 예가 있지만 정확한 문제가 아니기 때문에 저를 도와주지 못했습니다.JAI는 .tiff 파일에 바이트를 저장합니다.

바이트 []의 데이터를 .raw에 이미 저장하고 소스에 실제로 일부 데이터가 포함되도록 결과를 볼 수 있습니다. 문제의 메서드는 예외없이 실행 가능하지만 Windows XP ImageViewer로 볼 때마다 흑백 이미지 만 얻을 수 있습니다. (오히려 CHAR [] 또는 문자열보다는 바이트 [] 사용으로하고, 그것에 대해 매우 좋지 않다 따라서 지원하지 문자셋 텍스트를 그리기위한

public void saveTif(byte[] imgData) { 
    BufferedImage bufferedImage = new BufferedImage(1280, 1024, BufferedImage.TYPE_BYTE_GRAY); 
    bufferedImage.createGraphics().drawBytes(imgData, 0, 1280*1024, 0, 0); 

    TIFFEncodeParam params = new TIFFEncodeParam(); 
    params.setCompression(TIFFEncodeParam.COMPRESSION_NONE); 
    String filenametiff = path + File.separatorChar + new SimpleDateFormat("dd_MM_yyyy_HH_mm_ss'.tiff'").format(new Date()); 
    JAI.create("filestore", bufferedImage, filenametiff, "TIFF", params); 
} 

답변

1

Graphics.drawBytes() 사용된다

내 방법)를 이미지 위에 놓습니다.

Graphics.drawBytes()은 원시 픽셀을 그리는 데 사용할 수 없습니다.

올바른 이미지 표현을 얻으려면 픽셀 데이터에서 BufferedImage 이미지를 새로 만들거나 일치하는 이미지를 만들고 이미지에 데이터를 설정해야합니다. RasterDataBuffer 클래스를 살펴보십시오.

+1

예! 감사! drawBytes ... 행을 삭제하고 더하기 \t \t WritableRaster raster = bufferedImage.getRaster(); \t \t raster.setDataElements (0, 0, 1280, 1024, imgData); 사이에 멋진 작품! :) – user1525814