2

我使用以下代码将任何格式的图像保存到png

$crawl_outfile = 'webss_' . uniqid() . '.png';
imagepng(imagecreatefromstring(file_get_contents($src)),$crawl_outfile);

它将 290 KB 的大小增加到 1.7 MB。无法理解原因。有什么方法(参数)来获得更小的图像?

4

3 回答 3

7

JPEG 是一种有损压缩格式(图像中的一些细节丢失),而 PNG 不是。因此,PNG 的文件大小会更大。

PNG 可以有效地压缩某些内容,例如相同颜色的大面积区域。JPEG 更擅长压缩照片。

于 2013-05-19T15:42:43.887 回答
2

PNG 代表便携式网络图形。它精确地存储像素,其压缩技术最适合像素画和大面积纯色的屏幕截图。对于连续色调的图像(即照片),每个像素之间的颜色变化很小,它不能很好地压缩它们。方便的OptiPNGPngCrush工具可以稍微减小 PNG 文件的大小,但简短的回答是,您永远无法将 PNG 照片缩小到 JPEG 的大小。

JPEG 代表联合图像专家组。它专为连续色调图像而设计,并且可以很好地压缩它们。另一方面,它的有损压缩技术会丢失被认为太微妙以至于人类无法注意到的色彩细节,并且它无法很好地处理锐利的边缘

另外请注意,PNG 支持透明度、调色图像和动画,而 JPEG 不支持,但 JPEG 具有更复杂的元数据支持和(很少支持)无损模式。所以这两种格式都有自己的怪癖。要最小化文件大小,您需要根据图像的视觉特征选择格式。基本上,对照片使用JPEG,对其他所有内容使用PNG。

于 2013-05-19T16:08:24.770 回答
1

我对此不太了解,但可能是由包含透明部分信息的PNG文件引起的..所以它必须更大

因此,如果您想以较小的文件大小更改相同大小的格式,则无需做任何事情

是有关PNG的信息

这是关于文件大小而不是质量。PNG 比 JPG 更擅长处理大块颜色

于 2013-05-19T15:45:04.680 回答