哪种方法可以在不降低质量的情况下缩小图像大小

use*_*849 33 php compression image

我正在尝试开发基于图像的网站.我对图像类型和压缩技术感到困惑.请告诉我压缩图像大小的最佳方法.

Ven*_*wen 85

如果您希望使用编码本身来减小大小,可以在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);
?>
Run Code Online (Sandbox Code Playgroud)
$d = compress($source_img, $destination_img, 90);
Run Code Online (Sandbox Code Playgroud)

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

$info = getimagesize($source);
Run Code Online (Sandbox Code Playgroud)

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

  • 此函数将源图像转换为JPEG,忽略gif动画和png透明度 (7认同)
  • 乔尔!谢谢你的提及.我根据你的建议编辑了代码:) (4认同)
  • 看到?好多了!而且你从我那里获得了+1的努力!记住:好的答案可能需要时间,但值得努力:) (2认同)

max*_*hud 8

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

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

imagejpeg($tn, $save, 75);
Run Code Online (Sandbox Code Playgroud)


Tud*_*tin 7

我会去的jpeg.阅读这篇关于图像尺寸缩小的文章,在决定技术后,使用ImageMagick

希望这可以帮助


whi*_*kid 5

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