减少用户头像的大小? - 创建缩略图

时间:2009-09-27 14:32:18

标签: php image-manipulation thumbnails avatars

我的网站用户上传用作头像的图片。我已将上传限制大小设置为2 MB。在大多数地方我只需要缩略图。但是用户上传的图像分辨率要高得多。我将这些文件存储在我的文件系统中。

如何创建缩略图并存储它们而不是大尺寸文件?

7 个答案:

答案 0 :(得分:3)

根据您的安装/服务器设置,您有多种可能性。

我会说我从未见过没有安装GD的服务器 - 对于Imagick来说,它默认安装的可能性较小: - (


另一个解决方案可能是调用convert命令行实用程序(它附带ImageMagick - 独立于任何PHP扩展名),使用exec之类的东西来调用它。 / p>

优点,那就是你不会被memory_limit限制,因为调整大小将由外部工具执行 - 但是,当然,这也意味着你的应用程序将依赖于一个外部工具,这并不总是很好......


如有必要,有很多关于GD的教程;例如,那些人可能会对你感兴趣:

答案 1 :(得分:3)

您可以使用GD moduleImageMagick module来调整和缩小所有上传的图片。

如果您在浏览类似“PHP图像缩放器”的内容,您会发现很多示例。我倾向于使用GD,因为我有一些旧的代码踢得很好。假设您在$srcImgPath找到了已知的已上传的jpeg图片,则可以执行以下操作:$newWidth$newHeight是您想要的新图片尺寸:

list($width, $height, $type) = getimagesize($srcImgPath);
$srcImg = imagecreatefromjpeg($srcImgPath);
if ($srcImg === false) return false;
$workImg = imagecreatetruecolor($newWidth,$newHeight);
imagecopyresampled($workImg,$srcImg,0,0,0,0,$newWidth,$newHeight,$width,$height);
imagejpeg($workImg,$newFilename,$quality);

适当地进行功能化,并确保指定$quality。您可以将此代码抽象出来以便非常轻松地处理GIF和png。

答案 2 :(得分:1)

查看gd库,特别是imagecopyresized function

答案 3 :(得分:1)

快速说明一下,如果沿着GD路线走,请使用imagecopyresampled,因为它可以生成更清晰的图像。我的意思是它看起来不会像颗粒状和/或像素一样。

链接到函数的PHP手册:http://us2.php.net/manual/en/function.imagecopyresampled.php

答案 4 :(得分:1)

我会推荐timthumb.php脚本。它坚如磐石。 http://www.darrenhoyt.com/2008/04/02/timthumb-php-script-released/

答案 5 :(得分:0)

如果您在PHP设置中安装了Imagick。然后有一个功能可以做到这一点。 Imagick::thumbnailImage()

如果您没有Imagick,那么GD库就会派上用场。因为他们有imagcopyresized()

答案 6 :(得分:0)

Google AppEngine不是配备了PIL的子集吗?有一个'resize'功能可以使用......最重要的是,你获得免费配额!