首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用imagejpeg使图像文件变得更小

使用imagejpeg使图像文件变得更小
EN

Stack Overflow用户
提问于 2012-09-27 11:39:34
回答 2查看 701关注 0票数 1

我正在用php做一个图片分享网站。我读到了google的pagespeed,他们说我需要优化我的图片,所以我一直在尝试使用imagejpeg,然后希望我能在png和gif中使用基本相同的代码。

这是我目前拥有的代码:

代码语言:javascript
复制
$img = imagecreatefromjpeg($original);

if ($extension === "jpg" || $extension === "jpeg"){
    $location = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . $id . "/fullsize." . $extension;
    $temp = fopen($location, 'w');
    imagejpeg($img, $location, 80);
    fclose($temp);
}

它负责获取$original上的图像,并将通过imagejpeg保存的副本保存到$location。

但有时生成的文件会比原始文件大!这就是我被难住的地方。

为什么会发生这种情况?

我怎样才能让它停止发生呢?

我正在尝试减少图像文件的大小而不影响它们的外观,有没有比这更好的方法呢?

谢谢,

利亚姆

EN

Stack Overflow用户

回答已采纳

发布于 2012-09-27 11:41:55

imagejpeg只会缩小文件,如果你保存它的质量设置比产生的原始文件低

例如:

代码语言:javascript
复制
imagejpeg($gd, 'temp.jpg', 50);
$temp = imagecreatefromjpeg('temp.jpg');
imagejpeg($gd, 'temp2.jpg', 70);

可能会生成更大的temp2文件,因为它的质量设置更高,这大致相当于“不要压缩太多”。

如果不经过整个jpeg压缩过程,就无法预测给定图像和质量设置的最终输出大小。您可能必须对图像进行几次尝试重新压缩,并降低每次的质量设置,直到开始出现一些收缩。

当然,如果你把质量降低得太低,你基本上会把图像搞得一团糟,而且肯定会引入可见的伪像。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12613731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档