Как создавать эскизы изображений в PHP в размерах 300X200?
Я использую приведенный ниже код для создания эскизов изображений в PHP. Он генерирует миниатюры, пропорциональные размерам высоты и ширины изображения.
make_thumb('images/image.jpg', 'images-generated-thumbs/7.jpg', 300, 200);
function make_thumb($src, $dest, $desired_width, $desired_height) {
/* read the source image */
$source_image = imagecreatefromjpeg($src);
$width = imagesx($source_image);
$height = imagesy($source_image);
/* find the "desired height" of this thumbnail, relative to the desired width */
$desired_height = floor($height*($desired_width/$width));
$desired_width = floor($width*($desired_height/$height));
/* create a new, "virtual" image */
$virtual_image = imagecreatetruecolor($desired_width, $desired_height);
/* copy source image at a resized size */
imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);
/* create the physical thumbnail image to its destination */
imagejpeg($virtual_image, $dest);
}
В приведенном выше примере он генерирует миниатюру 7.jpg
с размером 299x187. Итак, мой вопрос заключается в том, как заполнить остальные пиксели ((300-299) x (300-187)) белым цветом. Если мы удалим переменную $desired_height
в приведенном выше коде, она точно генерирует эскиз с шириной 300, поэтому нужно только заполнить остальную высоту белым цветом.
Перед изменением ширины/высоты сохраните их:
$actual_width = $desired_width;
$actual_height = $desired_height;
$desired_height = floor($height*($desired_width/$width));
$desired_width = floor($width*($desired_height/$height));
Когда вы делаете холст:
/* create a new, "virtual" image */
$virtual_image = imagecreatetruecolor($actual_width, $actual_height);
Виртуальное изображение на данный момент черное, залейте его белым:
$white = imagecolorallocate($virtual_image, 255, 255, 255);
imagefill($virtual_image, 0, 0, $white );