Вопрос по php, image – PHP - создать одно изображение из изображений

4

У меня есть N-изображения и хочу создать один с PHP-кодом. Я использую imagecopymerge (), но не могу этого сделать. Пример, пожалуйста?

посмотреть здесьstackoverflow.com/questions/1394061/… endo.anaconda
Пожалуйста, опубликуйте то, что вы пробовали. Nadh
если вы хотите сделать копию и изменить размер изображения, следуйте инструкциямblog.webtech11.com/2012/04/21/… jogesh_pi

Ваш Ответ

2   ответа
2

Я адаптировал ваш ответ для конкретного проекта, в котором изображения могут быть неизвестны. Поэтому я заставил ваш ответ работать с массивом изображений.

Это также дает возможность указать, сколько строк или столбцов вы хотите. Я добавил несколько комментариев, чтобы помочь также.

$images = array('/images/upload/photoalbum/photo/1.jpg','/images/upload/photoalbum/photo/2.jpg','/images/upload/photoalbum/photo/3.jpg');
$number_of_images = count($images);

$priority = "columns"; // also "rows"

if($priority == "rows"){
  $rows = 3;
  $columns = $number_of_images/$rows;
  $columns = (int) $columns; // typecast to int. and makes sure grid is even
}else if($priority == "columns"){
  $columns = 3;
  $rows = $number_of_images/$columns;
  $rows = (int) $rows; // typecast to int. and makes sure grid is even
}
$width = 150; // image width
$height = 150; // image height

$background = imagecreatetruecolor(($width*$columns), ($height*$rows)); // setting canvas size
$output_image = $background;

// Creating image objects
$image_objects = array();
for($i = 0; $i < ($rows * $columns); $i++){
  $image_objects[$i] = imagecreatefromjpeg($images[$i]);
}

// Merge Images
$step = 0;
for($x = 0; $x < $columns; $x++){
  for($y = 0; $y < $rows; $y++){
    imagecopymerge($output_image, $image_objects[$step], ($width * $x), ($height * $y), 0, 0, $width, $height, 100);
    $step++; // steps through the $image_objects array
  }
}

imagejpeg($output_image, 'test.jpg');
imagedestroy($output_image);

print "<div><img src='test.jpg' /></div>";
Спасибо за это, я смог адаптировать это, чтобы решить проблему, которая у меня была
2,5 года и до сих пор полезно. Спасибо! К вашему сведению, если вы хотите обрезать изображения вместе от центра вместо того, чтобы брать левый край, вы можете изменитьimagecopymerge() метод к этому:imagecopymerge($output_image, $image_objects[$step], ($width * $x), ($height * $y), imagesx($image_objects[$step])/2 - $width/2, 0, $width, $height, 100);
8

$numberOfImages = 3;
$x = 940;
$y = 420;
$background = imagecreatetruecolor($x, $y*3);


$firstUrl = '/images/upload/photoalbum/photo/1.jpg';

$secondUrl = '/images/upload/photoalbum/photo/2.jpg';

$thirdUrl = '/images/upload/photoalbum/photo/3.jpg';

$outputImage = $background;

$first = imagecreatefromjpeg($firstUrl);
$second = imagecreatefromjpeg($secondUrl);
$third = imagecreatefromjpeg($thirdUrl);



imagecopymerge($outputImage,$first,0,0,0,0, $x, $y,100);
imagecopymerge($outputImage,$second,0,$y,0,0, $x, $y,100);
imagecopymerge($outputImage,$third,0,$y*2,0,0, $x, $y,100);

imagejpeg($outputImage, APPLICATION_PATH .'/images/upload/photoalbum/photo/test.jpg');

imagedestroy($outputImage);

Похожие вопросы