изменить размер — PHP GD масштабировать изображение

Я пытаюсь поиграть с GD, и я пытаюсь заставить его работать с большими изображениями. Я хочу, чтобы изображение, которое изначально было размером 640×640, было изменено до 130×130 на моем изображении, которое я создаю в GD. Тем не менее, с моим кодом он просто обрезает 130×130 изображения из верхнего левого угла. Другими словами, я не получаю полное изображение в 130×130. Я пробовал каждый фрагмент, который смог найти, но все равно не повезло в получении этого. Это код, который у меня есть;

header ("Content-type: image/jpeg");

$image1Url = "background.jpg";
$image2Url = "image.jpg";
$image1 = imageCreateFromjpeg($image1Url);
$image2 = imageCreateFromjpeg($image2Url);

imagecopymerge($image1, $image2, 10, 10, 0, 0, 130, 130, 100);

$line1 = "This is the first line";
$line2 = "This is the second line";
$font = "./VERDANA.TTF";
$white = imagecolorallocate($image1, 255, 255, 255);
$yellow = imagecolorallocate($image1, 252, 205, 5);

imagefttext($image1, 14, 0, 150, 110, $yellow, $font, $line1);
imagefttext($image1, 14, 0, 150, 135, $white, $font, $line2);
Imagejpeg ($image1, NULL, 100);

ImageDestroy ($image1);
ImageDestroy ($image2);

Я хочу, чтобы изображение, указанное как $ image2Url, было уменьшено до 130×130 независимо от его первоначального размера. Для меня важно, чтобы я сохранял пропорции.

Я пробовал разные фрагменты, которые смог найти, но все же не повезло … Мне удалось изменить исходное изображение до желаемого размера, но не в пределах окончательного изображения в моем сценарии GD.

1

Решение

Если вы используете версию PHP> = 5.5, вы должны использовать imagescale(), Если нет, используйте следующее сразу после загрузки $image2:

$image3 = imagecreatetruecolor(130,130);
list($image2w, $image2h) = getimagesize($image2Url);
imagecopyresampled($image3, $image2, 0, 0, 0, 0, 130, 130, $image2w, $image2h);

// then use $image3 instead of $image2
1

Другие решения

Других решений пока нет …