0
我正在使用以下代码上传图像并创建300x300图像和50x50缩略图。PHP图像上传/调整大小创建黑色图像
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
得到正确的图像尺寸和新的高度和宽度是正确的为好。基本上,据我所知,一切都正常工作,除非事实上我得到了正确大小的两个黑色方块而不是原始图像的大小。