PHP - ImageCopyResampled max size

问题描述:

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

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

$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; 

谢谢。

+0

这是你的吗? http://*.com/questions/2274266/php-problem-with-imagecopyresampled如果是这样,你为什么要开设新账户来问新问题? – 2010-02-17 01:55:45

+0

对,对不起。我决定使用不同的电子邮件地址,因为我为第一个帐户输入了错误的电子邮件地址。感谢您的回答。 – mist 2010-02-17 02:20:32

这取决于脚本可能占用的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根本不存在。

+0

感谢您的答案,但问题与CSS。基本上,我做的是通过ajax上传图片文件,然后立即将其加载到同一页面,以“最大宽度”700px显示。有我使用插件“Jcrop”来处理裁剪尺寸和发送这种使用后期的方法。起初,代码适用于宽度不超过700像素的图像。由于这不适用于超过700px的宽度,我只是删除了最大宽度属性,现在它可以工作。我知道从编程的角度来看,这是非常荒谬的,下面会有更好的解释。 – mist 2010-02-17 02:35:30

+0

然后,问题主要不是PHP脚本,而是作物插件向您发送的数据。所有传递给脚本的裁剪参数的测试输出会给你带来什么? (可能是'print_r($ _ GET);') – 2010-02-17 09:02:19