Tengo un montón de imágenes de igual altura en formato PNG que quiero organizar horizontalmente en una sola imagen, sin superposición. Necesito un software que pueda hacer esto automáticamente (por ejemplo, con un archivo por lotes) o con solo unos pocos clics del mouse. Ni XnView ni IrfanView parecen tener esta opción en su repertorio de procesamiento por lotes. La herramienta de montaje/conversión de ImageMagick puede hacer esto, pero es extremadamente ineficiente en términos de memoria y utiliza más de 10 GB de RAM para combinar imágenes con solo 0,5 GP en total (a 24 bpp), lo cual es inaceptable. DipStych tiene un problema similar. Y por lo que he visto, el software de unión panorámica como ICE generalmente no puede combinar imágenes sin superponerlas.
En teoría, esta debería ser una tarea trivial: cargar todas las imágenes en la RAM, concatenar las matrices, guardarlas en el disco y listo. ¿Qué software puede realmente hacer esto?
Ya mencionaste imagemagick (IM). También debería funcionar con archivos más grandes. Solo inténtalo. Este software asigna por defecto una cantidad aparentemente razonable de memoria dependiendo de los recursos de hardware disponibles para facilitar el procesamiento rápido de las operaciones en la memoria principal y no depender de los tiempos de acceso al disco.
Lo primero que debe hacer es usar una versión de IM de 8 bits en lugar de una profundidad de color de 16 bits (o, alternativamente, graphicsmagick, que a menudo funciona incluso más rápido).
Si definitivamente desea poner IM (o gm) en cadenas y esperar más (órdenes de magnitud) para completar la tarea, puede probar su opción "-limit" ( https://www.imagemagick.org/script /command-line-options.php#limit ): tan pronto como se superen los límites propuestos relevantes, los píxeles de la imagen se asignan al disco en lugar de a la memoria principal.
Puede usar la cadena de herramientas de Hugin como si estuviera uniendo escaneos, como se describe en http://hugin.sourceforge.net/tutorials/scans/en.shtml , donde la sección Técnicas avanzadas habla sobre el uso de secuencias de comandos. Tendrá que investigar un poco en la documentación, pero puede forzar los puntos de control (utilizados para alinear imágenes) para que estén en los bordes comunes de las imágenes adyacentes.
Hugin es una cadena de herramientas gratuita, (gratis y de código abierto), multiplataforma, para realizar costuras panorámicas, apilamiento de enfoque y exposición, corrección y más.
Nota sobre el uso de la memoria:
Las imágenes JPEG son un formato comprimido, por lo que al considerar el uso de la memoria, cualquier operación (edición, conversión, unión, etc.) utilizará al menos píxeles de ancho x píxeles de alto x bytes_por_color x número de canales de color bytes de RAM. Por lo tanto, un archivo de ejemplo que elegí al azar es un jpeg con:
Si está generando una nueva imagen, necesitará, como mínimo, suficiente espacio para la(s) imagen(es) de entrada más la imagen de salida final, por lo que fusionar 2 fotos como la de arriba necesitará al menos 4*54 MB = 216 MB para fusionar solo dos archivos de imagen de "6 MB".
respuesta tardía, muchos juegos toman un montón de pequeñas imágenes. y mézclelos todos en un programa. que luego escupe un solo archivo. con x,y (esquina superior/izquierda) y x,y (esquina inferior, derecha) dentro del archivo único de todas las imágenes dentro del archivo único. y luego solo hacen referencia a la matriz de la imagen que se mostrará. lo más probable es que se use para fines de animación simples de animación. de decir disparos (pequeña explosión) pero sin el arma. arma en sí, unidad de pie en cada dirección, etc... cada pequeña imagen generalmente tiene un fondo transparente, con solo los píxeles necesarios para mostrar. (diff) en esencia. por lo que el archivo único en general es un poco más pequeño. y los programadores de juegos pueden cargar un solo archivo en la memoria ocupando menos espacio. las pequeñas imágenes individuales pueden tener cualquier tamaño / forma en su mayor parte. es la lista de arreglos que saca con el único archivo grande. eso es importante.
trabajando con imágenes más grandes por otro lado. puede mirar el formato de archivo/imagen "tif", o mirar la lectura/escritura/añadir archivos puros al archivo. sin cargarlos todos en la memoria. leer archivo. escribir en archivo, leer archivo, agregar a archivo, leer archivo, agregar a archivo. por lo tanto, se usa una cantidad mínima de memoria.
html5 -> lienzo y algo de javascript podría funcionar. ejecute un botón de carga de archivos múltiples a través de la carga de archivos html5 con opción múltiple. y un javascript que sigue expandiéndose hacia la izquierda o hacia la derecha agregando imágenes una al lado de la otra en el elemento del lienzo, y luego guarda el lienzo mediante el botón de descarga. o aviso automático con una ventana de "descarga" al seleccionar dónde guardar.
szkj
512 * 1024 * 1024 * bytes_per_pixel * image_count
. Esto alcanzaría los 10GB en caso de 7 imágenes. Supongo que imagemagick haría el trabajo con algunos ajustes. Por ejemplo: uso de memoria de ImageMagickY G
vgarra
Tomás Weller
Nicolás Raúl
Nicolás Raúl
phuclv