Мне нужно поместить изображение в центр другого изображения (как по горизонтали, так и по вертикали) размером 700 * 350. Я пытаюсь использовать следующий код. Но я получаю изображение как растянутое.
@header("Content-Type: image/png"); $imageURL = "flower.jpg"; // create a transparent background image for placing the $imageURL image $imageResource = imagecreatetruecolor(700, 350); imagesavealpha($imageResource, true); $transparentColor = imagecolorallocatealpha($imageResource, 0, 0, 0, 127); imagefill($imageResource, 0, 0, $transparentColor); $backgroundImage = imagecreatefromjpeg($imageURL); list($width, $height) = getimagesize($imageURL); imagecopyresampled($imageResource, $backgroundImage, 350, 175, 0, 0, 700, 350, $width, $height); imagepng($imageResource, "newimage.jpg");
Это не центрирует изображение, а также файл flower.jpg удаляется, когда я запускаю этот код. Что я делаю неправильно в этом?
Может ли кто-нибудь помочь мне исправить это? Заранее спасибо.
Так вам нужно что-то вроде этого?
@header("Content-Type: image/png"); $imageURL = "flower.jpg"; // create a transparent background image for placing the $imageURL image $imageResource = imagecreatetruecolor(700, 350); imagesavealpha($imageResource, true); $transparentColor = imagecolorallocatealpha($imageResource, 0, 0, 0, 127); imagefill($imageResource, 0, 0, $transparentColor); $backgroundImage = imagecreatefromjpeg($imageURL); list($width, $height) = getimagesize($imageURL); imagecopyresampled($imageResource, $backgroundImage, 175, 85, 0, 0, 350, 175, $width, $height); imagepng($imageResource, "newimage.jpg"); imagedestroy($imageResource); imagedestroy($backgroundImage);
Вы указали центр целевого изображения в качестве координат назначения и весь размер целевого изображения вместо необходимых размеров центрального прямоугольника, в который будет изменено исходное изображение.
Также вы не делали imagedestroy
, что вы полностью должны.