【发布时间】:2009-02-10 14:12:12
【问题描述】:
我有一个保存图像的方法,它可以优雅地处理错误,在失败时将 $imageSrc 设置为特定图像。如果图像存在,我的方法可以正常工作,但似乎没有正确处理错误情况。
$imageSrc = save_pic($PIC_URL, $pk);
function save_pic($pic_url, $pk) {
$imageDir = './';
if (!strlen($pic_url))
return "removed.jpg";
if (!is_dir($imageDir) || !is_writable($imageDir)) {
return "removed.jpg";
}
$image = file_get_contents($pic_url);
if (empty($image)) {
return "removed.jpg";
}
$r = file_put_contents($imageDir.$pk.".jpg", $image);
if ($r) {
return "./$pk.jpg";
} else {
return "removed.jpg";
}
}
如果图像不存在,我会得到:
Warning: getimagesize(http://127.0.0.1/555.jpg) [function.getimagesize]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in C:\Program Files\EasyPHP 2.0b1\www\get_auction.php on line 144
Array (
[type] => 2 [message] => getimagesize(http://127.0.0.1/555.jpg)
function.getimagesize]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
[file] => C:\Program Files\EasyPHP 2.0b1\www\get_auction.php
[line] => 144
) 1
returned.jpg 在任何情况下都不会返回。
编辑:添加 imageResize 代码:
function imageResize($imageURL, $maxWidth, $maxHeight)
{
global $outputWidth, $outputHeight, $maxWidth, $maxHeight;
$size = getimagesize($imageURL);
if ($size) {
$imageWidth = $size[0];
$imageHeight = $size[1];
$wRatio = $imageWidth / $maxWidth;
$hRatio = $imageHeight / $maxHeight;
$maxRatio = max($wRatio, $hRatio);
if ($maxRatio > 1) {
$outputWidth = $imageWidth / $maxRatio;
$outputHeight = $imageHeight / $maxRatio;
} else {
$outputWidth = $imageWidth;
$outputHeight = $imageHeight;
}
} else {
die(print_r(error_get_last()));
}
}
【问题讨论】:
-
PHP 不是疯了还是什么! :) ...“一个 .Net 家伙”;)
-
这里缺少代码... getimagesize 消息来自哪里?
-
目前尚不清楚您在什么时候从其他代码调用 imageResize()。请重新组织以提供包括当前错误消息在内的所有内容,如果您仍然无法自行修复,谢谢。
标签: php