编辑
感谢您的所有回答,尤其是@Mailerdaimon,他注意到我没有在imagecopyresampled
函数中使用计算值。
我不再得到黑色图像,但我仍然得到一些黑色部分,所以我认为我的比率公式应该更新:如果我上传横向图像,新图像的高度小于 170 像素,然后有一些黑色显示。
我怎样才能确保图像的高度一直走?
下面是一个简单的脚本,允许用户上传图片。上传完成后,图片将显示为 170px(h) x 150px(w) 的缩略图。
调整大小部分确实有效,因为输出图像是 170x150px 但如果我仍然得到一些黑色区域
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$maxWidth = 150;
$maxHeight = 170;
$name = $_FILES ['image'] ['name'];
$type = $_FILES ["image"] ["type"];
$size = $_FILES ["image"] ["size"];
$tmp_name = $_FILES ['image'] ['tmp_name'];
list($originalWidth, $originalHeight) = getimagesize($tmp_name);
if ($originalWidth > $originalHeight)
{
$thumbnail_height = floor(($originalHeight/$originalWidth)*$maxWidth);
$thumbnail_width = $maxWidth;
} else {
$thumbnail_width = floor(($originalWidth/$originalHeight)*$maxHeight);
$thumbnail_height = $maxHeight;
}
// Resample
$image_p = imagecreatetruecolor($maxWidth, $maxHeight);
imagecreatefrompng($tmp_name);
imagecopyresampled($image_p, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height,
$originalWidth, $originalHeight);
//start upload process
$RandomNumber = uniqid();
$location = "uploads/$RandomNumber";
imagejpeg($image_p, $location, 100);
$sql=query("UPDATE users SET image = '".$location."' WHERE id = '$id'");
}
}
知道我做错了什么吗?