我正在使用 ImageJ API 将一些 24 位 TIFF 图像转换为 8 位 JPG。 转换后我需要对这些图像进行其他处理。 我做了这个:
ImagePlus img = IJ.openImage(f.getAbsolutePath()); // Open image
new ImageConverter(img).convertToGray8(); // Convert image to 8-bit grayscale
IJ.saveAs(img, "jpg", newPath); // Export image to jpg
// Read the same image again
// Process it
我的问题是转换必须将图像保存到磁盘,之后我必须立即再次读取它,而且我正在处理大量图像。 有没有办法创建 jpg 图像并将其放入对象而不将其存储在磁盘上?
具体来说,我的目标是创建一个包含图像字节内容的 Hadoop SequenceFile,这样我就根本不需要存储它们。
最佳答案
您可以这样从 ImagePlus 类中获取原始缓冲图像:
BufferedImage rawImage = img.getBufferedImage();
所以理论上你可以从那里使用 API 来获取字节而不是写入磁盘
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ImageIO.write(rawImage, "jpg", baos);
byte[] imageInByte=baos.toByteArray();
希望这能奏效
关于java - ImageJ - 在不保存文件的情况下转换图像格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43778272/