【问题标题】:Saving jpg to png increases size [duplicate]将jpg保存为png会增加大小[重复]
【发布时间】:2013-05-20 00:45:15
【问题描述】:

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

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

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

【问题讨论】:

  • stackoverflow.com/questions/3049724/…。查看docs,您可以为压缩参数传递更高的值(尽管请注意PNG 是无损的,因此compression 标题有点误导)。
  • @keyboardP 你可以进行无损压缩,想想 .zip ;))
  • @moonwave99 - 对不起,我的意思是quality。文档中的参数将其称为quality,但因为 png 是无损的,所以这有点误导。无法编辑我的原始评论,但希望 OP 看到这个:D
  • @keyboardP 啊,现在有道理了,对不起^^祝你有美好的一天!
  • @moonwave99 - 没问题,这是我的错误 :)

标签: php image-processing


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    JPEG 代表联合 摄影 专家组。它专为连续色调图像而设计,并非常很好地压缩它们。另一方面,它的有损压缩技术丢失了被认为太微妙以至于人类无法注意到的颜色细节,并且处理得不好with sharp edges

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

    【讨论】:

      【解决方案3】:

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

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

      Here 是关于 PNG 的信息

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

      【讨论】:

      • Alpha 通道只是导致 PNG 文件比相应 JPEG 文件大的次要原因。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      • 2016-08-07
      • 2010-12-02
      • 2011-03-07
      相关资源
      最近更新 更多