У меня есть два изображения, которые я хотел бы объединить, а затем сохранить в новое место.
Я хотел бы, чтобы второе изображение было размещено непосредственно под первым изображением.
У меня есть следующее, но изображение даже не сохраняется.
$destimg = imagecreatefromjpeg('images/myimg.jpg'); $src = imagecreatefromgif('images/second.gif'); // Copy and merge imagecopymerge($destimg, $src, 316, 100, 0, 0, 316, 100, 100);
Оба изображения имеют ширину или 316 пикселей x 100 пикселей
Из приведенного выше кода $ destimg теперь должен быть 316×200, но этого не происходит. Также, как это будет новое изображение и сохранить в другую папку.
Спасибо за любую помощь.
Наилучшим подходом для этой ситуации может быть создание нового изображения в памяти с помощью объединенных размеров, которые вы желаете, затем скопируйте или перепрограммируйте существующие изображения на новое изображение, а затем сохраните новое изображение на диск.
Например:
function merge($filename_x, $filename_y, $filename_result) { // Get dimensions for specified images list($width_x, $height_x) = getimagesize($filename_x); list($width_y, $height_y) = getimagesize($filename_y); // Create new image with desired dimensions $image = imagecreatetruecolor($width_x + $width_y, $height_x); // Load images and then copy to destination image $image_x = imagecreatefromjpeg($filename_x); $image_y = imagecreatefromgif($filename_y); imagecopy($image, $image_x, 0, 0, 0, 0, $width_x, $height_x); imagecopy($image, $image_y, $width_x, 0, 0, 0, $width_y, $height_y); // Save the resulting image to disk (as JPEG) imagejpeg($image, $filename_result); // Clean up imagedestroy($image); imagedestroy($image_x); imagedestroy($image_y); }
Пример:
merge('images/myimg.jpg', 'images/second.gif', 'images/merged.jpg');
Я предлагаю вам вместо этого использовать Image Magick (модуль pecl-imagick или запускать его как команду через оболочку). У меня есть несколько причин:
Imagick:
Ваш метод Imagick :: compositeImage, если вы используете php-модуль. Руководство: http://php.net/manual/en/function.imagick-compositeimage.php
я хотел бы добавить еще одну вещь здесь, если вы используете PHP GD Library, тогда вы должны включить imagesavealpha()
и alphablending()
.
Я нашел ответ, используйте GD:
function merge($filename_x, $filename_y, $filename_result) { // Get dimensions for specified images list($width_x, $height_x) = getimagesize($filename_x); list($width_y, $height_y) = getimagesize($filename_y); // Create new image with desired dimensions $image = imagecreatetruecolor($width_x, $height_x); // Load images and then copy to destination image $image_x = imagecreatefromjpeg($filename_x); $image_y = imagecreatefromgif($filename_y); imagecopy($image, $image_x, 0, 0, 0, 0, $width_x, $height_x); // top, left, border,border imagecopy($image, $image_y, 100, 3100, 0, 0, $width_y, $height_y); // Save the resulting image to disk (as JPEG) imagejpeg($image, $filename_result); // Clean up imagedestroy($image); imagedestroy($image_x); imagedestroy($image_y); }
как это:
merge('images/myimage.jpg', 'images/second.gif', 'images/merged.jpg');