У меня есть n-изображения и вы хотите создать их с помощью php-кода. Я использую imagecopymerge (), но не могу это сделать. Например, пример?
Код:
$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);
Спасибо kruksmail,
Я адаптировал ваш ответ для конкретного проекта, в котором изображения могут быть неизвестны. Поэтому я сделал ваш ответ работы с массивом изображений.
Он также дает возможность указать, сколько строк или столбцов вы хотите. Я также добавил несколько комментариев.
$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>";