缩略图在php中生成图像问题

时间:2018-09-10 10:18:58

标签: php laravel zend-framework

我编写了以下代码来为php中的图像生成缩略图,对于某些图像来说效果很好,但是在高分辨率/大尺寸图像的情况下,显示

  

此页面无效

问题。 imagecreatefromjpeg()在这里不起作用。对此有什么解决方案,请帮帮我。

function make_accused_thumb($src, $dest, $desired_width) {

/* read the source image */
//ini_set('gd.jpeg_ignore_warning', 1);
//echo $src;exit;
//echo $src;exit;
$source_image = @imagecreatefromjpeg($src);
echo $src;exit;
if (!$source_image)
{
  $source_image= @imagecreatefromstring(file_get_contents($src));
}

$width = @imagesx($source_image);
$height = @imagesy($source_image);

/* find the "desired height" of this thumbnail, relative to the desired width  */
$desired_height = @floor($height * ($desired_width / $width));

/* create a new, "virtual" image */
$virtual_image = @imagecreatetruecolor($desired_width, $desired_height);

/* copy source image at a resized size */
@imageCopyResized($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);

/* create the physical thumbnail image to its destination */
@header('Content-Type: image/jpeg');
@imagejpeg($virtual_image, $dest);

}

1 个答案:

答案 0 :(得分:0)

如果您曾经在PHP应用程序中进行过任何类型的图像处理,您将开始意识到使用本地PHP命令(如createimagefromjpg等)时的局限性。这会占用您的Web服务器内存!如今,在人们的手机中携带10百万像素相机的情况下,上传照片并调整其大小可能会对资源造成很大压力,尤其是如果网站上的多个用户同时进行操作时。

要解决这个难题,有一个名为imagick(包装类)的PHP库,该库可让您访问名为ImageMagick的终端程序。 ImageMagick在计算机上本地运行,并且可用于Unix,Linux,Mac和Windows,因此运行它应该不是问题。这里唯一要考虑的是您的托管服务提供商PHP是否具有imagick可用。如果没有,根据您的托管软件包,您可能可以通过SSH进入服务器并进行安装。

当我切换到使用IMagick PHP类时,错误停止了,并且网站大大加速了。

以下是在Linux和Windows上安装的方法:

Howto: Install Imagick (for php) on Ubuntu 11.10

How to install ImageMagick to use with PHP on Windows 7 (3)

这是IMagick类的文档: http://be2.php.net/manual/en/class.imagick.php