【问题标题】:How to reduce the image size without losing quality in PHP [closed]如何在不损失 PHP 质量的情况下减小图像大小 [关闭]
【发布时间】:2012-07-10 05:47:17
【问题描述】:

我正在尝试开发一个基于图像的网站。对于更快的页面加载速度和最佳压缩实践的最佳图像类型,我真的很困惑。请告诉我压缩图像大小的最佳方法。

【问题讨论】:

  • Jpeg、gif 和 png 图像已经被压缩。你能澄清一下吗?

标签: php image performance compression google-pagespeed


【解决方案1】:

如果您希望使用编码本身来减小大小,您可以在 php 中遵循此代码。

<?php 
function compress($source, $destination, $quality) {

    $info = getimagesize($source);

    if ($info['mime'] == 'image/jpeg') 
        $image = imagecreatefromjpeg($source);

    elseif ($info['mime'] == 'image/gif') 
        $image = imagecreatefromgif($source);

    elseif ($info['mime'] == 'image/png') 
        $image = imagecreatefrompng($source);

    imagejpeg($image, $destination, $quality);

    return $destination;
}

$source_img = 'source.jpg';
$destination_img = 'destination .jpg';

$d = compress($source_img, $destination_img, 90);
?>

$d = compress($source_img, $destination_img, 90);

这只是一个 php 函数,它传递源图像(即$source_img)、目标图像($destination_img)和需要压缩的图像质量(即 90)。

$info = getimagesize($source);

getimagesize() 函数用于查找任何给定图像文件的大小并返回尺寸以及文件类型。

【讨论】:

  • 此函数将源图像转换为JPEG,忽略gif动画和png透明度
  • 为了克服@nikmauro 提到的 png 透明度问题,我使用了 imagepng 而不是 imagejpeg。将 imagejpeg 用于 jpg 文件,当然只是修改 if 语句以使用适当的功能。但是为了保存透明度,我还必须添加(在输出/保存之前): imagealphablending($image, false);图像保存阿尔法($图像,真);我还必须将 $quality 减 10 才能工作,因为 imagepng 不是从 0 - 100 而是从 0 - 9
  • 好一个。但困扰我的一件事是为什么压缩为 90?是否有一个最小值,当通过时,图像会失去其“原创性”?
  • 我不知道为什么,但是当我使用此代码时图像会旋转,我将如何防止这种情况发生。它似乎总是逆时针旋转 90 度。
  • 已排序,我必须从原始图像中读取exif数据并进行相应调整。
【解决方案2】:

我会选择jpeg。阅读this post关于图像尺寸缩小的信息,并在决定技术后,使用ImageMagick

希望对你有帮助

【讨论】:

    【解决方案3】:

    你可以调整大小,然后使用 imagejpeg()

    不要将 100 作为 imagejpeg() 的质量 - 任何超过 90 的东西通常都是矫枉过正的,只会让你得到一个更大的 JPEG。对于缩略图,请尝试 75 并向下工作,直到质量/大小的权衡是可以接受的。

    imagejpeg($tn, $save, 75);
    

    【讨论】:

    • 如何将调整后的图片移动到特定文件夹?
    【解决方案4】:

    好吧,我想我有一些有趣的事情要给你...https://github.com/whizzzkid/phpimageresize。我写它的目的完全相同。高度可定制,而且做得很好。

    【讨论】:

      猜你喜欢
      • 2016-02-04
      • 1970-01-01
      • 2010-09-10
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多