这确实是一个两个部分问题,因为我还不完全了解这些事情的工作方式:

我的情况:我正在编写一个Web应用程序,该应用程序可以使用户上传图像。然后,我的应用程序调整到可显示的东西(例如:640x480-ish),并保存以备后用的文件。

我的问题:

  1. 给定一个任意的JPEG文件,是否可以说出什么是质量水平,以便在保存调整大小的图像时可以使用相同的质量?
  2. 这甚至重要吗?无论原始质量如何,我都应该在不错的水平上保存所有图像(例如:75-80)?

我对此不太确定,因为正如我所想的那样:(让我们以极端的例子),如果有人拥有5百万像素的图像保存在质量0上,那将是任何东西。将图像尺寸降低到640x480,将使块状平滑,并且 仅仅 不太明显...直到我再次以质量0保存0 ...

另一方面,如果有一个Q = 0的图像为800x600,则调整到640x480的大小不会改变它看起来像是完全垃圾的事实,因此用Q = 80节省的时间将是多余的。

我什至关闭吗?

如果有任何用途,我正在使用PHP上的GD2库

有帮助吗?

解决方案

  1. JPEG是一种有损格式。每次保存JPEG相同的图像时,无论质量水平如何,都会降低实际图像质量。因此,即使您确实从文件中获得了质量水平,也无法在再次保存JPEG时保持相同的质量(即使在质量= 100处,也无法保持相同的质量。

  2. 您应该将JPEG保存在文件尺寸方面的高质量中。或使用诸如PNG之类的无损失格式。

低质量的JPEG文件不仅会变得更加块。取而代之的是颜色深度减小,并删除图像部分的细节。您不能依靠较低质量的图像是块状的,并且看起来还不错,尺寸较小。

根据 JFIF规格。 尽管水平和垂直像素密度存储了,但质量数(0-100)并未存储在图像标头中。

其他提示

您可以通过ImageMagick查看压缩水平。下载和安装说明可以在 官方网站.

安装后,从命令行运行以下命令:

identify -format '%Q' yourimage.jpg

您应该将值从0(低质量,小文件)到100(高质量,大文件尺寸)的值获得。

信息源

对于未来的访问者,检查给定JPEG的质量,您可以使用ImageMagick工具:

$> identify -format '%Q' filename.jpg
   92%

JPEG压缩算法具有一些影响结果图像质量的参数。

这样的参数之一是量化表,该表定义了每个系数上将使用多少位。不同的程序使用不同的排序表。

一些程序允许用户设置质量级别0-100。但是这个数字没有共同的辩护。用质量60%的Photoshop制作的图像需要46 KB,而用GIMP制作的图像仅需26 KB。

量化表也不同。

还有其他参数,例如子采样,DCT方法和等。

因此,您无法按单个质量级别的数字描述所有内容,也无法按单个数字比较JPEG图像的质量。但是您可以创建像Photoshop或GIMP之类的数字,这些数字将描述质量大小之间的妥协。

更多信息:http://patrakov.blogspot.com/2008/12/jpeg-quality-is-is-meaningless-number.html

常见的做法是,您将图像大小调整到适当的尺寸并在此之后应用JPEG。在这种情况下,巨大图像的大小和质量相同。

因为已经有两个答案使用 identify, ,这是 还输出文件名(用于一次扫描多个文件):

如果您希望有一个简单的输出 filename: quality 用于在多个图像上使用,您可以使用

identify -format '%f: %Q' *

显示文件名 +压缩 当前目录中的所有文件。

因此,您基本上有两种情况:

  1. 如果传入图像的质量设置过高,则可能会占用不适当的空间。因此,例如,您可能希望将传入的Q = 99减少到Q = 85。

  2. 如果传入图像的质量设置过低,则可能浪费空间来提高其质量。除了在提高质量时丢弃大量数据的图像不会神奇地占用更多空间 - 即使在高质量的设置下,块状图像也会非常好。因此,我认为将传入的Q = 1提高到Q = 85是完全可以的。

由此我认为,仅仅强迫质量不错的环境是一件完全可以接受的事情。

这是我发现运行良好的公式:

  1. jpg100size(质量为98-100%的字节不应超过字节的大小)=宽度*高度/1.7

  2. jpgxsize = jpg100size*x(x =百分比,例如0.65)

因此,您可以使用它们来找出最后保存的JPG质量的统计学质量。如果您想将其放下以说是质量65%,并且要避免重新采样,则应比较最初的尺寸,以确保它的质量还不太低,然后降低质量

文件的每一个新保存都将通过使用更高质量的值来进一步降低整体质量。不管原始图像质量是什么。

如果您使用最初创建的相同软件(使用相同的设置)重新定位JPEG,您会发现损坏是最小化的 - 该算法将倾向于将其第一次丢弃的相同信息抛出。我认为仅通过查看文件就可以知道选择了什么级别。即使可以的话,不同的软件几乎可以保证不同的参数和舍入,这几乎是不可能的。

这可能是一个愚蠢的问题,但是您为什么要对文档的质量进行微观管理?我相信,如果您使用ImageMagick进行转换,它将为您管理JPEG的质量,以获得最佳效果。 http://www.php.net/manual/en/intro.imagick.php

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top