这个问题在这里已经有答案了:
java中的无损jpeg旋转(90/180/270度)(4个答案)
6年前关门了。
我想无损地旋转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();
我在这个网站上发现了一个老帖子:java中的无损jpeg旋转(90/180/270度)?
也许有更好的解决办法。我对media util库不是很有信心(它很旧,并且打包在一个.exe文件中)。
有人有主意吗?有没有新的更好的方法?
提前谢谢。
警察
1条答案
按热度按时间xdnvmnnf1#
只能以90度增量无损旋转。
要以90个增量进行压缩,您需要使用原始文件中使用的相同量化表进行压缩(根据编码器的不同,这仍然可能导致丢失),或者使用一个特殊的程序重新排列jpeg流中的mcu。
任何时候你解压缩一个jpeg使用不同的量化表,你会得到损失。