JAI를 사용하여 잠시 동안 ImageOutputStream을 byte []로 변환하려고 시도했습니다. 모든 입력을 부탁드립니다. 감사.ImageOutputStream을 byte []에 변환
죄송합니다. 여기에 코드 스 니펫이 있습니다. 제가 작업하고 있습니다. 이전에 게시해야했습니다. 내가 직면하고있는 문제는 ImageOutputStream에서 ByteArrayOutputStream을 얻을 수 있다는 것입니다. 하지만 항상 0 바이트를 제공합니다. 그러나 ByteArrayOuputStream 대신 FileOutputStream을 사용하면 0이 아닌 바이트가있는 파일에 쓸 수 있습니다. :
File file = new File("C:/TIFFImages/tiff-image.tiff");
FileInputStream in = new FileInputStream(file);
long filelength = file.length();
byte[] bytes = new byte[(int)filelength];
int offset = 0;
int numRead = 0;
while (offset < bytes.length && (numRead=in.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
}
if (offset < bytes.length) {
throw new IOException("Could not completely read file "+file.getName());
}
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
RenderedImage src = JAI.create("stream", SeekableStream.wrapInputStream(bais, true));
RenderedOp renderedOp = MedianFilterDescriptor.create(src, MedianFilterDescriptor.MEDIAN_MASK_SQUARE , 1, null);
BufferedImage image = renderedOp.getAsBufferedImage();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
//Instead of baos if I pass a FileOutputStream to the above function. It writes non zero
//bytes to the output file
TIFFImageWriterSpi tiffspi = new TIFFImageWriterSpi();
ImageWriter writer = tiffspi.createWriterInstance();
RenderedImage renderedImage = PlanarImage.wrapRenderedImage(src);
writer.setOutput(ios);
writer.write(image);
writer.write(null,new IIOImage(image, null, null), param);
System.out.println("After tiff ImageIO operations" + baos.toByteArray().length);
감사합니다, 인 Vinay
명확하게 할 수 있습니까? 이전에 IOS로 작성한 컨텐츠를 변환하려고합니까? –