回答
正如上面正确地回答的那样,在质量100下使用“典型”JPEG编码器不会给你无损压缩。存在无损JPEG编码,但本质上不同并且很少使用。
我只是发布说,为什么质量100并不意味着无损。在JPEG压缩信息在DCT系数量化步骤期间大部分丢失(8乘8的系数块被8乘8的量化表分割,所以它们变得越小→越“可压缩”)。当您将JPEG质量设置为100时,不会发生真正的量化(因为量化表将全部为1,至少使用标准IJG-JPEG表),所以实际上您在这里不会丢失信息。
但是主要有两个因素导致的信息损失即使在没有量化发生:
- 通常,JPEG压缩减少颜色信息(becase的人类视觉系统是比lumimance少senstitive到这一点)。因此,即使在质量为100的情况下,您可能正在执行色度二次采样(这意味着会降低一半或更多的Cb和Cr系数)。发生这种情况时,即使未发生量化,信息也会丢失。但是,您可以告诉编码器保持完整的色度(所谓的4:4:4颜色采样)。然而,JPEG编码意味着去往DCT域,这导致系数舍入。舍入丢弃一些信息。无论所有其他选项如何,这都会发生。
无论设置如何,Jpeg都是有损的。在100,你可能会损失至少。
这很容易测试。掀起一个简单的.bmp,将其压缩到q = 100 jpeg,然后重新提取回.bmp。使用Gimp/Photoshop做两个位图的“差异”,你会看到有损失 - 它会比在q = 50或q = 1的转换上少得多,但仍然存在。
根据wikipedia号
JPEG 100具有2.6的压缩比为2:1。压缩方法通常是有损的,这意味着一些原始图像信息丢失并且不能被恢复,可能影响图像质量。
在JPEG标准中定义了可选的无损模式;但是,这种模式在产品中并未得到广泛支持。
仅仅因为它具有压缩比率并不会使其成为有损耗的。你可以压缩无损的质量... PNG/GIF? – Doomsknight
压缩方法通常是有损的,这意味着某些原始图像信息丢失,无法恢复,可能会影响图像质量。在JPEG标准中定义了一种可选的无损模式;但是,这种模式在产品中并未得到广泛支持。 –
你应该添加到你的答案。这是一个更好的解释,为什么它是有损的 - 而不仅仅是说它有一个压缩比:) – Doomsknight
有一个lossless form of JPEG但它没有得到广泛支持,你不通过调整质量设置得到它 - 这是一个完全不同的过程。
那么为什么它被称为JPEG? – Pacerier
@Prier好问题。这是因为它是由联合图像专家组开发的,它们是制作原始JPEG的相同人员。我不知道他们为什么试图搭载早期的规格,而不是像JPEG-2000那样创建一个新规格。 –
- 1. c#:在以100%质量保存JPEG时降低图像质量
- 2. PHP JPEG裁剪:质量损失?
- 3. TWICImage,如何设置jpeg压缩质量?
- 4. 是否可以在Google App Engine中使用get_serving_url()设置JPEG质量?
- 5. libjpeg和无损JPEG
- 6. 在.NET中旋转JPEG,质量损失最小
- 7. 下载后显着jpeg质量损失和base64编码
- 8. JPEG编码器 - 从命令行设置质量
- 9. 的Tcl/Tk:如何设置写入JPEG文件的质量
- 10. 如何使用imagemin-cli设置JPEG质量?
- 11. png文件压缩为jpeg时全黑。这是因为PNG是无损的吗?
- 12. php Gmagick保存jpeg质量
- 13. JPEG图像像素质量
- 14. Java图像质量(JPEG)
- 15. 如何将jpeg转换为字节数组而不损失其质量
- 16. 无损JPEG文件写入
- 17. 如果我丢失一个压缩文件并再次保存(例如JPEG),是否会损失质量?
- 18. Flash Player“低质量”设置是否仅针对反走样?
- 19. 使用imagemagick设置质量?
- 20. 查找变量是否设置为Java
- 21. 检查变量是否设置为NO_VALUE
- 22. 回形针:指定jpeg/jpg质量
- 23. 当高度设置为100时,swf无法填充窗口
- 24. 在C++中无损处理JPEG
- 25. 在DICOM中处理无损jpeg图像
- 26. 的Java保存原始JPEG无损耗
- 27. 如何检测无损JPEG 2000压缩?
- 28. 无损压缩JPEG gstreamer元素?
- 29. 使用matlab处理ljpeg(无损jpeg)
- 30. PHP设置cookie不是100%
优秀的答案。谢谢。 – Sugrue