У меня есть метод для сохранения изображения, который должен изящно справляться с ошибкой, устанавливая $ 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
return.jpg никогда не возвращается ни при каких обстоятельствах.
редактировать: добавлено изображениеРазмер кода:
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()));
}
}