在java中编码jpeg而无需磁盘写入

在java中编码jpeg而无需磁盘写入,java,jpeg,encode,Java,Jpeg,Encode,正如标题所说,我需要找到一些java jpeg编码器,源代码或外部库都很好,给定一个表示原始像素图像或缓冲区图像的数组,可以对其进行编码,而无需在文件中写入任何内容,并可能通过某种数组返回编码图像,至少可以选择图像质量,并且可能具有良好的效率 注意:数组/映像类型输入所需的字节、int、argb、rgb、bgr、yuv。。。对我来说没关系,如果您只需要一个字节流,我可以进行适当的转换,然后使用Java的内置方法 正如评论中已经提到的:您可以使用该类,并使用它来编写一个。代码可以非常简单,如下所示

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


注意:数组/映像类型输入所需的字节、int、argb、rgb、bgr、yuv。。。对我来说没关系,如果您只需要一个字节流,我可以进行适当的转换,然后使用Java的内置方法


正如评论中已经提到的:您可以使用该类,并使用它来编写一个。代码可以非常简单,如下所示:

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

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

这里的最终目标是什么?您是否试图通过网络传递编码的jpeg?您可以简单地使用ImageIO将BuffereImage写入ByteArrayOutputStream,并最终从该流中获取字节数组…1在写入图像之前,我需要对图像进行加密,因为如果我对加密的字节进行编码,因为jpeg是一种有损格式,我将无法解密回来,所以我需要在加密之前执行jpeg编码__2是否可以避免使用ImageIO写入文件?我不知道,如果可能的话,我如何从OutputStream中检索数组?它不是将图像写入文件吗?我需要没有输出写入将被执行。如果它可以避免使用该方法进行写入,那么我如何从OutputStream检索数组?它将写入您传入的输出流。只是不要使用文件输出流。使用ByteArrayOutputStream,您将拥有一个表示图像的字节流,并且不会写入任何文件。
private static byte[] getJpgData(BufferedImage image)
{
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageIO.write(image, "jpg", baos);
    return baos.toByteArray();
}