如何旋转jpeg无损(90,180,270,360)

时间:2014-03-11 15:02:07

标签: java javax.imageio

我想旋转jpeg图像无损。

我的代码成功但失败了:

ByteArrayInputStream inputstream = new ByteArrayInputStream(imgByteArraySource);
BufferedImage oldBufferedImage = ImageIO.read(inputstream);

BufferedImage newBufferedImage = rotate(oldBufferedImage, degrees);
ByteArrayOutputStream baos = new ByteArrayOutputStream();   
ImageIO.write(newBufferedImage, "jpg", baos);
baos.flush();
byte[] imageInByte = baos.toByteArray();

我在这个网站上发现了一个旧帖子: Lossless JPEG Rotate (90/180/270 degrees) in Java?

也许有更好的解决方案。 我对media-util库不太自信(它很旧,并且打包在.exe文件中)。

有人有想法吗? 有没有新的更好的方法来做到这一点?

提前致谢。

巴比

1 个答案:

答案 0 :(得分:0)

只能以90度的增量无损旋转。

要以90为增量进行操作,您需要使用原始中使用的相同量化表进行压缩(仍可能会导致丢失,具体取决于编码器)或使用重新排列JPEG流中MCU的特殊程序。

每次使用不同的量化表解压缩JPEG时,都会丢失。