Я пытаюсь изменить размер и обрезать изображения с помощью GD, а затем сохранить их в базе данных. У меня есть основы работы GD, однако он возвращает черный прямоугольник правильного размера, но без изображения. Ниже приведена часть формы, которую я использовал, может кто-нибудь заметит ошибку, пожалуйста ?! Обратите внимание: я не могу перейти от GD к Imagick, поскольку мой хостинг-сервер не поддерживает его.
Очень признателен!
foreach ($_FILES["offer_slider_imgs"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["offer_slider_imgs"]["tmp_name"][$key];
$name = $_FILES["offer_slider_imgs"]["name"][$key];
move_uploaded_file($tmp_name, "../uploads/$name");
$image = imagecreatefromjpeg("/uploads/$name");
// GD variables:
list($width, $height, $type) = GetImageSize("/uploads/$name");
// Image sizes:
$bigImage = array(1920, 740);
$source_aspect_ratio = $width / $height;
$big_aspect_ratio = $bigImage[0] / $bigImage[1];
if ( $source_aspect_ratio > $big_aspect_ratio ){
$temp_height = $bigImage[1];
$temp_width = ( int ) ( $bigImage[1] * $source_aspect_ratio );
} else {
$temp_width = $bigImage[0];
$temp_height = ( int ) ( $bigImage[0] / $source_aspect_ratio );
}
//echo "$temp_width, $temp_height";
$temp_img = imagecreatetruecolor($temp_width, $temp_height);
imagecopyresampled($temp_img, $image,
0, 0, 0, 0,
$temp_width, $temp_height, $width, $height);
$bx0 = ($temp_width - $bigImage[0]) / 2;
$by0 = ($temp_height - $bigImage[1]) / 2;
$desired = imagecreatetruecolor($bigImage[0], $bigImage[1]);
imagecopy($desired, $temp_img,
0, 0, $bx0, $by0, $bigImage[0], $bigImage[1]);
$rand = rand();
// Save image:
header("Content-type: image/jpeg");
$saveB = imagejpeg($desired, 'TESTIMAGE.jpg', 90);
// Destroy images:
imagedestroy($image);
imagedestroy($desired);
$images_name = $rand.'OFFER.jpg' ." | " . $images_name;
}
}