当前位置: 首页 > 面试题库 >

在PHP中高效调整JPEG图像大小

车思淼
2023-03-14
问题内容

在PHP中调整大图像大小的最有效方法是什么?

我目前正在使用GD函数imagecopyresampled来拍摄高分辨率图像,并干净地将其调整大小以进行Web查看(大约700像素宽乘700像素高)。

这对于较小(小于2 MB)的照片非常有用,整个调整大小操作在服务器上花费的时间不到一秒钟。但是,该网站最终将为摄影师提供服务,他们可能会上传最大10
MB的图像(或最大5000x4000像素的图像)。

对大图像执行这种大小调整操作往往会大大增加内存使用量(较大的图像可能会使脚本的内存使用量超过80
MB)。有什么方法可以使此调整大小操作更有效?我应该使用ImageMagick这样的备用图像库吗?

现在,调整大小代码看起来像这样

function makeThumbnail($sourcefile, $endfile, $thumbwidth, $thumbheight, $quality) {
    // Takes the sourcefile (path/to/image.jpg) and makes a thumbnail from it
    // and places it at endfile (path/to/thumb.jpg).

    // Load image and get image size.
    $img = imagecreatefromjpeg($sourcefile);
    $width = imagesx( $img );
    $height = imagesy( $img );

    if ($width > $height) {
        $newwidth = $thumbwidth;
        $divisor = $width / $thumbwidth;
        $newheight = floor( $height / $divisor);
    } else {
        $newheight = $thumbheight;
        $divisor = $height / $thumbheight;
        $newwidth = floor( $width / $divisor );
    }

    // Create a new temporary image.
    $tmpimg = imagecreatetruecolor( $newwidth, $newheight );

    // Copy and resize old image into new image.
    imagecopyresampled( $tmpimg, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height );

    // Save thumbnail into a file.
    imagejpeg( $tmpimg, $endfile, $quality);

    // release the memory
    imagedestroy($tmpimg);
    imagedestroy($img);

问题答案:

人们说ImageMagick更快。充其量只是比较两个库并进行度量即可。

  1. 准备1000张典型图像。
  2. 编写两个脚本-一个用于GD,一个用于ImageMagick。
  3. 将它们都运行几次。
  4. 比较结果(总执行时间,CPU和I / O使用率,结果图像质量)。

其他人最好的东西可能对您来说不是最好的。

另外,我认为ImageMagick具有更好的API接口。



 类似资料:
  • 问题内容: 我有一个快速的问题,我不太确定要进行设置。我在其他地方看到过示例,但没有什么比我的情况更具体。我想使用PHP调整图像的大小,以使图像易于阅​​读,而不仅仅是像使用HTML那样随意拉伸。如果它们的宽度不是250像素,也不是160像素,那么如何调整图片的大小,使其成比例但适合该空间? 谢谢! 问题答案: 好的,下面是我在商店中使用的Image对象。保持规模-需要GD 我在请求时调整图像的大

  • 问题内容: 我正在使用Grails开发网络相册,并且用于图像处理,正在使用grails-image-tools插件。如果上传的图像太大(例如:大于600 * 840),我需要一种功能来调整图像的大小。在这种情况下,我需要将此图像调整为600 * 840)。最有效的方法是什么?非常感谢。 问题答案:

  • 问题内容: 我在这里使用Go调整大小包:https://github.com/nfnt/resize 我正在从S3中提取图像,如下所示: // this gives me data []byte 之后,我需要调整图像大小: // problem is that the original_image has to be of type image.Image 将图像上传到我的S3存储桶 // pro

  • 我有一个尺寸为800x800的图像,其大小为170 kb。我想将此图像调整为600x600。调整大小后,我希望缩小图像大小。我该怎么做?

  • 问题内容: 我需要调整图像大小,但是我想避免使用PIL,因为我无法使其在OS X下运行-不要问我为什么… 无论如何,因为我对gif / pgm / ppm感到满意,所以PhotoImage类对我来说还可以: 问题是-如何调整图像大小?以下仅适用于PIL,与非PIL等效吗? 谢谢! 问题答案: 因为这两个 和希望整数作为参数,我用这两种。 我不得不将320x320图片的尺寸调整为250x250,最终

  • 问题内容: 我要在pdf文件中添加一个水印。水印是.bmp图像,并且是2290 x3026。尝试调整此图片的大小以适合页面时,我遇到很多麻烦,有人有什么建议吗? 这是方法的输出。 我会与你们共享pdf图片,但不幸的是我不能。 我应该尝试改用.jpg吗?我真的不知道iText如何处理不同的图像扩展名。 问题答案: 您可以使用另一种方法:“手动”调整图像大小(即通过图像处理软件),而不是通过iText