我正在尝试用php创建并保存一个上传图像文件的正方形版本(thumb)。我当前的脚本像它应该裁剪的那样,但图像是完全黑色的。下面是我的代码:
if ($_FILES['profile_pic']['type'] == "image/png") {
$is_image = true;
$newImage = imagecreatefrompng($img);
} else if ($_FILES['profile_pic']['type'] == "image/jpeg") {
$is_image = true;
$newImage = imagecreatefromjpeg($img);
} else if ($_FILES['profile_pic']['type'] == "image/gif") {
$is_image = true;
$newImage = imagecreatefromgif($img);
} else {
$is_image = false;
}
$img = $_FILES["profile_pic"]['tmp_name'];
$min_width = 100;
$min_height = 100;
$width = 0;
$height = 0;
if ($is_image) {
list($width, $height) = getimagesize($img);
}
if ($is_image && $height >= $min_height && $width >= $min_width) {
$img = $_FILES["profile_pic"]['tmp_name'];
$imgPath = "../img/profile_pics/{$member_id}.png";
// Resize
$aspect_ratio = $width / $min_width;
$new_height = $height * $aspect_ratio;
$canvas1 = imagecreatetruecolor($min_width, $new_height);
imagecopyresampled($canvas1, $newImage, 0, 0, 0, 0, $min_width, $new_height, $width, $new_height);
// Crop
$canvas2 = imagecreatetruecolor($min_width, $min_height);
imagecopyresampled($canvas2, $newImage, 0, 0, 0, 0, $min_width, $min_height, $min_width, $min_height);
imagejpeg($canvas2, $imgPath, 80);
imagedestroy($canvas1);
}
我意识到以前有人问过这个问题,但由于某些原因,我似乎不能让我自己的脚本工作。
发布于 2016-02-21 07:54:56
在尝试通过imagecreatefrompng($img)
或类似的方式创建$img
之后,您将对其进行初始化。这可能是它失败的原因。
我也不确定您是否想要将所有图像保存到一个*.png文件中,而不管它们的源类型是什么:您可能希望实现一些更灵活的东西。
https://stackoverflow.com/questions/35530147
复制相似问题