我正在尝试使用.NET开发一个基于Web的小型图像编辑器。我遇到了JPEG图像调整大小的问题。据我所知,没有办法在不失去一些质量的情况下操纵JPEG,并认为这是唯一的方法。 Resizing an image in asp.net without losing the image quality。在此示例中,目标图像保存为png。
所以我想做的是
1.用户上传图像时将其另存为PNG
2.像调整旋转等操纵它
3.将其另存为JPEG
如果我将png保存为jpeg,那么质量也会下降吗?或者它应该没问题,因为它只是用其他格式保存它而不是真正操纵它。
感谢。
答案 0 :(得分:1)
如果您不想失去质量,请不要使用jpeg。保持png有什么问题?当您将png重新保存为jpeg时,是的,您将失去一些质量,具体取决于您选择的压缩比。这就是jpeg格式的本质。
答案 1 :(得分:1)
PNG格式是一种无损格式,因此只要您使用源图像创建PNG就可以了。
供参考:
JPEG - 对于大多数规范都有损耗(新规范也有无损格式,但目前还没有很多库支持它。)
PNG - 无损
TIFF - 无损(RLE编码)
BMP - 无损(RAW编码)
答案 2 :(得分:1)
是的,它也会失去质量。调整JPEG大小的难度在于压缩(又称编码)算法本身,因此与源图像格式无关,因为要对图像进行编码,首先必须将其解码为原始格式(位图)。
另外,最好记住,如果您之前编码的图像是JPEG,那么编码器在调整大小后会再次编码它。 JPEG将图像划分为8x8像素块以执行编码,并调整大小以移动这些块的边框。这一点非常重要,因为压缩率越高,块之间的边界就越清晰 - JPEG在编码图像中不规则的锐边时特别糟糕(我正在跳过所有内部细节,它们现在不重要,评论是否无论如何你还想知道他们。但是,这种效果对于典型的照片压缩率并不重要。
基本上:如果您将图像编码为JPEG,则必须至少对其进行一次编码(显而易见,不是吗?;))。而JPEG(即有损)编码等于丢失质量。