PHP - ImageCopyResampled最大大小

时间:2010-02-17 01:44:57

标签: php

ImageCopyResampled可以处理的最大宽度和高度是多少?我的代码适用于宽度和高度较小的图像。对于较大的图像,它将忽略坐标,这意味着裁剪从图像的左上角开始。

有解决方法吗?这是一部分:

$trgt_width = 500;
            $trgt_height = 400;
            if(copy($src_file, $trgt_file)):
                $src_image = imageCreateFromJpeg($src_file);
                $trgt_image = imageCreateTrueColor($trgt_width, $trgt_height);
                imageCopyResampled($trgt_image, $src_image, 0, 0, $x, $y, $trgt_width, $trgt_height, $width ,$height);
                imageJpeg($trgt_image, $thumb_file, 75);
            endif;

感谢。

1 个答案:

答案 0 :(得分:2)

这取决于脚本可能占用的最大RAM量。这通常由管理员在您的服务器上设置。该设置称为memory_limit

您可以使用phpinfo()找到它并搜索“memory_limit”。

粗略计算调整图像大小所需的大小:

number of bytes width x number of bytes height x 3
对于真彩色图像的每个通道,

3:红色,绿色和蓝色。

因此,1000 x 1000像素的图像将占用至少3 MB的内存。在调整大小过程中可能更多,因为该函数必须同时将大型和大小调整版本保留在内存中。

在你的情况下,我怀疑图像根本没有被裁剪,可能是因为复制操作失败,因为$src_file根本不存在。