2010-07-23 151 views
1

我使用simple image manager class,并将下面的代码:PHP图像大小调整不起作用。是否有文件大小限制?

<?php 
include('SimpleImage.php'); 
$image = new SimpleImage(); 
$image->load($target_path); 
if($image->getWidth() > 500) { 
    $image->resizeToWidth(500); 
    echo "<p>Image Resized</p>"; 
} else echo "<p>Image did not need to be resized.</p>"; 
$image->save($target_path); 
echo "<p>Image Saved</p>"; 
?> 

当我上传的图像为700的宽度的图像被调整大小成功,但是当我上传一个非常大的图象(宽度〜= 2300 ),它不起作用,并且我没有看到我的任何echo消息。

做某些PHP图像函数有一个大小限制,可能会导致此?

+0

你有错误报告吗?将错误报告设置为'E_ALL | E_STRICT'在开发过程中使用'error_reporting()'查看所有错误和警告。 – 2010-07-23 15:29:12

回答

6

您很可能会碰到在php.ini中指定的memory_limit设置。

error_reporting(E_ALL);添加到脚本中,看看输出是什么。使用phpinfo()找出当前的内存限制设置。

它有时可以使用ini_set("memory_limit", xyz)进行更改。否则,你需要改变php.ini。

甲2300 X 2300像素的图像将要占用至少

2300 x 2300 x 3 = 15,870,000 

=大致的RAM 16兆字节(或2300 X 2300×4,如果有一个alpha通道),所以我说你将每个脚本至少需要24 MB RAM才能使其正常工作。也许更多。

1

有一个上传文件的大小限制;你可以在你的php.ini中设置它:

upload_max_filesize 
post_max_size 
+0

没有文件大小限制。有一个上传大小的限制,但没有一个处理文件(我经常处理1GB +文件)... – ircmaxell 2010-07-23 15:28:03

+0

亲爱的ircmaxell,你可以看到,如果你阅读与注意问题“图像成功调整大小,当我上传一个宽度为700的图像“表示存在上传过程。那么问题可以从这个问题的上传部分。 – 2010-07-23 15:30:21

+0

当然可以,但他问img *函数的大小限制。我读了你的回复(原来的回答)来回答这个问题(而不是试图解决问题)......编辑你的答案,说上传文件大小的限制,我很乐意删除downvote。 – ircmaxell 2010-07-23 15:43:04

1

检查你的错误日志。有可能您超出了内存限制(ini设置中的memory_limit)。尝试将ini_set('memory_limit', '32M');添加到文件的顶部。

并直接回答你的问题,没有没有大小限制的内部功能...

+0

只有在php.ini中没有“M”样式值吗?不过,我可能是错的,现在我还记不清楚。 – 2010-07-23 15:30:02

+0

他们也在'ini_set'中工作......至少在我用过的版本中(win32和linux都是5.2,win32和linux都是5.3)... – ircmaxell 2010-07-23 15:31:02

+0

啊好的,然后我就误解了。然后是'.htaccess'文件,它不能解析'php_admin_value memory_limit 32M',但需要一个完整的“32000000” – 2010-07-23 15:32:15