Я пытаюсь поиграть с 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.
Если вы используете версию 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
Других решений пока нет …