在 java 中编码 jpeg 而不写入磁盘
encoding jpeg in java without disk writing
正如标题所说,我需要找到一些 java jpeg 编码器(源代码或外部库都很好),给定一个表示原始像素图像的数组或 BufferedImage 可以对其进行编码 无需在文件上写入任何内容,并且return编码图像可能通过某种数组,至少可以选择图像质量并且可能具有良好的效率。
注意:array/image 所需的输入类型(byte、int、argb、rgb、bgr、yuv...)对我来说无关紧要,我可以进行适当的转换
如果您只需要一个字节流,则使用 Java 的内置方法。
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();
}
这将不会将图像写入光盘等。它只会将图像写入内存块,然后您可以对其进行进一步处理或操作。
正如标题所说,我需要找到一些 java jpeg 编码器(源代码或外部库都很好),给定一个表示原始像素图像的数组或 BufferedImage 可以对其进行编码 无需在文件上写入任何内容,并且return编码图像可能通过某种数组,至少可以选择图像质量并且可能具有良好的效率。
注意:array/image 所需的输入类型(byte、int、argb、rgb、bgr、yuv...)对我来说无关紧要,我可以进行适当的转换
如果您只需要一个字节流,则使用 Java 的内置方法。
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();
}
这将不会将图像写入光盘等。它只会将图像写入内存块,然后您可以对其进行进一步处理或操作。