Объединить два изображения в php

У меня есть два изображения, которые я хотел бы объединить, а затем сохранить в новое место.
Я хотел бы, чтобы второе изображение было размещено непосредственно под первым изображением.
У меня есть следующее, но изображение даже не сохраняется.

$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');