Здравствуйте, пользователи Stackoverflow! У меня есть проблема, которую я действительно не понимаю.
Я сделал простой скрипт, который позаботился о некоторых загруженных вложениях.
Он просматривает все загруженные изображения и вызывает функцию saveThumbnail()
для сохранения изображений.
Код:
if(count($_FILES['image']['name']) > 0) {
for($i=0; $i<count($_FILES['image']['name']; $i++){
$targetPath = "../../resources/img/posts/";
$pendingId = uniqid();
$targetName = $i . $pendingId . ".jpg";
saveThumbnail($i, $targetPath, $targetName);
}
}
Функция:
function saveThumbnail($i, $targetPath, $targetName){
$imgName=$_FILES['image']['name'][$i];
$imgLoc=$_FILES['image']['tmp_name'][$i];
if ($imgName == NULL || $imgLoc == NULL){
exit(CustomFunctions::ErrorWithCode("001"));
}
$path_parts = pathinfo($imgName);
$ext = $path_parts['extension'];
if ($ext != "png" && $ext != "jpg" && $ext != "gif" && $ext != "jpeg"){
exit(CustomFunctions::ErrorWithCode("002"));
}
if (($img_info = getimagesize($imgLoc)) === FALSE)
exit(CustomFunctions::ErrorWithCode("003"));
switch ($img_info[2]) {
case IMAGETYPE_GIF : $src = imagecreatefromgif($imgLoc); break;
case IMAGETYPE_JPEG : $src = imagecreatefromjpeg($imgLoc); break;
case IMAGETYPE_PNG : $src = imagecreatefrompng($imgLoc); break;
default : exit(CustomFunctions::ErrorWithCode("004"));
}
// Fix Rotation
$exif = exif_read_data($imgLoc);
if (!empty($exif['Orientation'])) {
switch ($exif['Orientation']) {
case 3:
$src = imagerotate($src, -180, 0);
break;
case 6:
$src = imagerotate($src, 90, 0);
break;
case 8:
$src = imagerotate($src, -90, 0);
break;
}
}
$ratio = $img_info[0]/$img_info[1]; // width/height
if( $ratio > 1) {
$width = 500;
$height = 500/$ratio;
}
else {
$width = 500*$ratio;
$height = 500;
}
$imgLocJPG = imagecreatetruecolor($width,$height);
imagecopyresampled($imgLocJPG,$src,0,0,0,0,$width,$height,$img_info[0],$img_info[1]);
imagedestroy($src);
if(!imagejpeg($imgLocJPG, $targetPath . $targetName, 100)){
exit(CustomFunctions::ErrorWithCode("005"));
}
// Destroy images
imagedestroy($imgLocJPG);
imagedestroy($imgLoc);
}
* Все работает нормально, если ** вместо строки saveThumbnail("image", $i, $targetPath, $targetName)
.
я помещаю содержимое функции
.
В противном случае, если я использую функцию, она не работает и код возвращает "\n"
.
Кто-то знает почему?