我想创建一个具有特定自定义宽度和缩略图的缩略图。高度。我使用的功能只创建一个具有最大设置宽度/高度的缩略图。
我如何调整以下功能给我一个定义的宽度/高度,例如50x50,75x75,100x100。
$original_photo = "photos/photo.extension";
$newcopy = "photos/thumbnails/photo.extension";
$copy_w = 50;
$copy_h = 50;
$extension = explode('.', 'photo.extension');
$extension = end($extension);
function create_thumbnail($original_photo, $newcopy, $copy_w, $copy_h, $extension) {
list($original_w, $original_h) = getimagesize($original_photo);
$scale_ratio = $original_w / $original_h;
if (($copy_w / $copy_h) > $scale_ratio) {
$copy_w = $copy_h * $scale_ratio;
} else {
$copy_h = $copy_w / $scale_ratio;
}
$img = '';
if ($extension == 'gif') {
$img = imagecreatefromgif($original_photo);
} elseif ($extension == 'png') {
$img = imagecreatefrompng($original_photo);
} else {
$img = imagecreatefromjpeg($original_photo);
}
$true_color = imagecreatetruecolor($copy_w, $copy_h);
imagecopyresampled($true_color, $img, 0, 0, 0, 0, $copy_w, $copy_h, $original_w, $original_h);
if (imagejpeg($true_color, $newcopy, 80) == true) {
return true;
} else {
return false;
}
}
答案 0 :(得分:0)
使用PHP / GD中的图像可能很痛苦。有许多边缘情况,特别是在操纵透明PNG / GIF时。
如果可能的话,我无耻地推荐我写的一个库来处理这样的事情:SimpleImage 3.0
使用SimpleImage,您可以使用以下代码实现所需的效果:
// Load the image from image.jpg
$image = new \claviska\SimpleImage('image.jpg');
// Create a 50x50 thumbnail, convert to PNG, and write to thumbnail.png
$image->thumbnail(50, 50)->toFile('thumbnail.png', 'image/png');
有关thumbnail
方法的工作原理和可用参数的详细信息,请参阅this page。