PHP:imagemagick使用convert创建空图像

时间:2010-12-12 20:05:25

标签: php imagemagick

我有一个脚本应该拍摄图像并将其转换为.jpg。这是实现它的代码:

$uploadDir = $_SERVER['DOCUMENT_ROOT'] . "/blogimages/";
$tempFile = ereg_replace("'", "_", basename($_FILES['newsImg']['name']));
$uploadFile = $uploadDir . $tempFile;
move_uploaded_file($_FILES['newsImg']['tmp_name'], $uploadFile);
$newPic = $uploadDir . $blogID . ".jpg";
if(file_exists($newPic)){
unlink($newPic);
}
$convertString = "$IM -strip $uploadFile $newPic";
echo "<!-- $convertString -->";
exec($convertString);

可以看出我把最后一个字符串放在HTML注释中,这样我就可以看到正在执行的内容。发生的是转换后的图像被创建,但它是一个0字节的图像。因此,实际上没有数据写入文件。只是为了确保转换实际上正常工作,我应该将转换字符串从html注释复制并粘贴到命令行,它工作得很好。它似乎只是在PHP exec中有问题。有关为什么会这样的想法吗?

2 个答案:

答案 0 :(得分:2)

我想也许当你尝试执行命令时上传文件句柄还没有关闭?这样Imagemagick会看到一个不完整的文件。

查看代码我不知道它是如何发生的,特别是因为文件被移动,但它会解释行为。

答案 1 :(得分:1)

首先对$_FILES['newsImg']['name']进行一些错误检查,然后确保move_uploaded_file(...)成功,然后进行跟进。