在 java 中编码 jpeg 而不写入磁盘

encoding jpeg in java without disk writing

正如标题所说,我需要找到一些 java jpeg 编码器(源代码或外部库都很好),给定一个表示原始像素图像的数组或 BufferedImage 可以对其进行编码 无需在文件上写入任何内容,并且return编码图像可能通过某种数组,至少可以选择图像质量并且可能具有良好的效率。

注意:array/image 所需的输入类型(byte、int、argb、rgb、bgr、yuv...)对我来说无关紧要,我可以进行适当的转换

如果您只需要一个字节流,则使用 Java 的内置方法。

http://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageIO.html#write(java.awt.image.RenderedImage,%20java.lang.String,%20java.io.OutputStream)

ImageIO.write(myImage, "format", myOutputStream); 

正如评论中已经提到的:您可以使用 ImageIO class, and use it to write to a ByteArrayOutputStream。代码真的可以这么简单:

private static byte[] getJpgData(BufferedImage image)
{
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageIO.write(image, "jpg", baos);
    return baos.toByteArray();
}

这将不会将图像写入光盘等。它只会将图像写入内存块,然后您可以对其进行进一步处理或操作。