我想旋转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文件中)。
有人有想法吗? 有没有新的更好的方法来做到这一点?
提前致谢。
巴比
答案 0 :(得分:0)
只能以90度的增量无损旋转。
要以90为增量进行操作,您需要使用原始中使用的相同量化表进行压缩(仍可能会导致丢失,具体取决于编码器)或使用重新排列JPEG流中MCU的特殊程序。
每次使用不同的量化表解压缩JPEG时,都会丢失。