Java 为什么我从gif文件转换的jpg文件不是';又脆又清?
我使用下面的代码将gif文件转换为jpg文件,它可以工作,但结果jpg文件的质量与原始gif文件的质量不同,为什么?有什么办法提高质量吗Java 为什么我从gif文件转换的jpg文件不是';又脆又清?,java,compression,jpeg,gif,javax.imageio,Java,Compression,Jpeg,Gif,Javax.imageio,我使用下面的代码将gif文件转换为jpg文件,它可以工作,但结果jpg文件的质量与原始gif文件的质量不同,为什么?有什么办法提高质量吗 try { ImageIO.write(ImageIO.read(new File("C:/abc.gif")),"jpg",new File("C:/abc.jpg")); } catch (Exception e) { e.printStackTrace(); } 因此,从另一个角度问这个问题,使用上述方法,如何提高输出质量?JPEG保证一定程度的保
try
{
ImageIO.write(ImageIO.read(new File("C:/abc.gif")),"jpg",new File("C:/abc.jpg"));
}
catch (Exception e) { e.printStackTrace(); }
因此,从另一个角度问这个问题,使用上述方法,如何提高输出质量?JPEG保证一定程度的保真度损失;这就是它实现压缩的方式。您可以选择不同的块大小来最小化瑕疵,但是会有瑕疵
try
{
ImageIO.write(ImageIO.read(new File("C:/abc.gif")),"jpg",new File("C:/abc.jpg"));
}
catch (Exception e) { e.printStackTrace(); }
GIF是无损的,JPEG是有损的;abc.jpg将永远不会是等同于abc.gif的像素。是一种丢弃人眼无法很好注意到的信息的格式。但是,根据压缩图像时的图像质量设置,例如块状和污迹会变得可见,这就是图像看起来不清晰的原因
该方法可能以低于保持图像足够好所需的质量设置来保存JPEG
要将质量设置设置得更高,需要使用指定图像质量设置,然后使用输出JPEG
例如:
// Get a writer for JPEG.
ImageWriter iw = ImageIO.getImageWritersByFormatName("jpeg").next();
iw.setOutput(new FileImageOutputStream(outputFile));
// Set the compression quality to 0.9f.
ImageWriteParam iwParam = iw.getDefaultWriteParam();
iwParam.setCompressionQuality(0.9f);
// Write image
iw.write(null, new IIOImage(imageToWrite, null, null), iwParam);
感兴趣的方法:
一般的经验法则是,对于照片和其他真实图像,有损压缩格式(如JPEG)在文件大小与质量的权衡中效果良好,而无损压缩格式(如PNG)在插图和线条艺术中效果更好,有类似颜色的大区域,但梯度效果很小。JPEG对于内部有文本的图像特别不好。一个很好的替代方法是.PNG。大致来说,JPEG适合于本质上是照片的图像。如果图像包含大量颜色变化,具有自然主义元素,并且类似于真实环境,那么JPEG将提供良好的质量,没有可见的瑕疵 如果图像是绘制的,或包含单一颜色的大色带且不是照片,则使用PNG可以更好地压缩图像。这是一个无损格式,可以做32位彩色
现在你几乎不应该使用GIF格式的图像-这种格式只支持8位颜色,压缩性能相对较差。JPEG标准中有无损部分,但没有人费心实现ist:)虽然GIF是无损的,但值得注意的是它是无损索引的颜色格式,因此,从Truecolor源保存时会丢失一些颜色信息。JPEG是一种有损的truecolor格式,因此索引图像被上转换为truecolor(质量没有提高),然后在JPEG/DCT意义上“平均化”(质量相应降低)。GIF标准还有一个有损部分。唉,事情并不是那么简单:)太好了,它的工作原理和我预期的差不多!但我注意到了一些有趣的事情,我读了一张png图像,并将压缩质量设置为1.0f,我认为输出会像原始图像一样,但相反,浅蓝色显示为深蓝色,因为这是一张股票图表,我不介意,我很高兴它能工作!谢谢你可以用下面的图表试试:@Frank:即使在压缩质量为1.0f的情况下,压缩也是有损的,因此输出的质量与原始的不一样。我在过去观察到颜色的变化,因此这可能是有损压缩的影响之一。另请参见: