Tengo una lista de imágenes de diferente tamaño, normalmente de tamaño más largo que de ancho. Tenía la intención de generar una sola imagen que llevara varias pero que fuesen del mismo ancho y alto. El comando más adecuado para esta tarea es montage de ImageMagick. Escribí un un script en PHP que lee las diferentes imágenes y luego las pega en una sola:
<?php /* @toro https://tar.mx */ $images = ["1.jpg","2.jpg","3.jpg","4.jpg"]; //arreglo de imágenes $tmps = []; //imagenes temporales //convertimos y cortamos a 500px por 500px foreach($images AS $k) { $tmp = tempnam("/tmp","test").".jpg"; $tmps[]=$tmp; $cmd = "convert -resize 500 -crop 500x500+0 $k $tmp"; $cmd = `$cmd`; } $final = "/tmp/final.jpg"; //collage // generamos un collage de 3x3 $cmd = "montage ".implode(" ",$tmps)." -geometry +1+1 -tile 2x2 ".$final; $cmd = `$cmd`; //eliminamos los archivos temporales foreach($tmps as $k) { unlink($k); }
Eso es todo, ahora tendríamos /tmp/final.jpg como un collage de 2x2 con imágenes cuadradas (de 500x500) y sería algo similar a la imagen de este escrito, que fue de 3x3. Como vemos, ImageMagick es una herramienta muy poderosa para hacer muchas cosas en línea de comandos.
https://panchito-kardashian.tar.mx/media/2018/07/portadas-impresas-mexico.jpg