Я использую следующий код для загрузки изображений и создания изображения 300×300 и миниатюры размером 50×50.
if ($_FILES['image_file']['errors'] > 0) { die("<br /><center><strong>Error uploading file:</strong> " . $_FILES['image_file']['error'] . "</center><br />"); } elseif ($_FILES['image_file']['size'] > 2500000) { // 2.5 megabyte limit die("<br />center><strong>Your file is too large. Please upload a smaller file.</strong></center><br />"); } switch (strtolower($_FILES['image_file']['type'])) { case 'image/jpeg': case 'image/pjpeg': $img = imagecreatefromjpeg($_FILES['image_file']['tmp_name']); break; case 'image/png': $img = imagecreatefrompng($_FILES['image_file']['tmp_name']); break; case 'image/gif': $img = imagecreatefromgif($_FILES['image_file']['tmp_name']); break; default: die("<br /><center><strong>Image file must be JPEG, PNG, or GIF.</strong></center><br />"); } $orig_height = imagesy($img); $orig_width = imagesx($img); // Resize the image for profile $scale = min(300/$orig_width, 300/$orig_height); $new_height = ceil($scale * $orig_height); $new_width = ceil($scale * $orig_width); $new_img = imagecreatetruecolor($new_width, $new_height); imagecopyresampled($new_img, $img, 0, 0, 0, 0, $new_with, $new_height, $orig_width, $orig_height); imagejpeg($new_img, "images/$uid.jpg", 85); imagedestroy($new_img); // Reize the image for thumbnails $scale = min(50/$orig_width, 50/$orig_height); $new_height = ceil($scale * $orig_height); $new_width = ceil($scale * $orig_width); $new_thmb = imagecreatetruecolor($new_width, $new_height); imagecopyresampled($new_thmb, $img, 0, 0, 0, 0, $new_with, $new_height, $orig_width, $orig_height); imagejpeg($new_thmb, 'images/' . $uid . '_thumb.jpg', 85); imagedestroy($new_thmb); imagedestroy($img);
Когда я повторяю вывод обращений imagecopyresampled
и imagejpeg
, все четыре: 1. Я могу подтвердить, что он также получает правильный размер изображения от imagesx
и imagesy
а также новые высоты и ширины. В принципе, насколько я могу судить, все работает правильно, за исключением того, что я получаю два черных квадрата на правильных размерах, а не на исходное изображение.