Combina gráficos de diferentes tamaños con ImageMagick


1

Estoy procesando un gran lote de imágenes que tienen una moneda de color plateado sobre un fondo negro. Primero recorto los archivos usando calculando las dimensiones de: trimbox = $ (convertir $ f -fuzz 35% -format "% @" info :)

Agrego 50 a los primeros 2 parámetros y 25 a cada uno de los últimos 2 (para que se vea más parte de la imagen original más allá de lo que detecta el recorte). He probado eliminando estas compensaciones sin diferencia.

convert "$f" -crop "$trimbox" +repage "$baseFilename-trimmed.jpg"

Una vez recortado estoy usando:

    command="$baseoFilename-trimmed.jpg $baserFilename-trimmed.jpg "
    command2="+repage _MG_$first"
    convert $command -append $command2-vmerged.jpg
    convert $command +append $command2-hmerged.jpg

para fusionar los archivos. He intentado variantes con -background black o -fill black en vano.

El rectángulo blanco delgado aparece porque las dos imágenes tienen un tamaño ligeramente diferente.

Preferiría que se redimensionen de forma idéntica para que no se necesite corrección, pero también aceptaría una barra negra.

Muestras de archivos:

Verlos en un fondo blanco, por supuesto, oscurece de lo que estoy hablando.


1
@Homey_D_Clown_IT Se agregó información. Las líneas de comando son muy básicas.
Stephen

Respuestas:


1

Este script debe hacer lo que quieras. Utiliza el ancho máximo o la altura máxima de las imágenes al recortar.

# !/bin/bash

set -eu

gettrimbox() {
    # Some lines were based on the code of Fred Weinhaus available on http://www.fmwconcepts.com/imagemagick/autotrim/
    trimbox=$(convert "$1" -fuzz 35% -format "%@" info: | tr -cs "0-9\n" " ")
    r_w=$(echo $trimbox | cut -d\  -f1)
    r_h=$(echo $trimbox | cut -d\  -f2)
    r_xoff=$(echo $trimbox | cut -d\  -f3)
    r_yoff=$(echo $trimbox | cut -d\  -f4)
    r_xcenter=$(((r_w/2)+r_xoff))
    r_ycenter=$(((r_h/2)+r_yoff))
    r_w=$((r_w+50))
    r_h=$((r_h+50))
}

f1=$1
f2=$2
number1=$(echo "$f1" | tr -dc "0-9")

gettrimbox "$f1"
w1=$r_w; h1=$r_h
xcenter1=$r_xcenter; ycenter1=$r_ycenter

gettrimbox "$f2"
w2=$r_w; h2=$r_h
xcenter2=$r_xcenter; ycenter2=$r_ycenter

if [ $w1 -gt $w2 ]; then max_w=$w1; else max_w=$w2; fi
if [ $h1 -gt $h2 ]; then max_h=$h1; else max_h=$h2; fi

convert "$f1"[$max_w"x"$h1+$((xcenter1-(max_w/2)))+$((ycenter1-(h1/2)))] \
        "$f2"[$max_w"x"$h2+$((xcenter2-(max_w/2)))+$((ycenter2-(h2/2)))] \
        -append +repage "_MG_$number1-vmerged.jpg"

convert "$f1"[$w1"x"$max_h+$((xcenter1-(w1/2)))+$((ycenter1-(max_h/2)))] \
        "$f2"[$w2"x"$max_h+$((xcenter2-(w2/2)))+$((ycenter2-(max_h/2)))] \
        +append +repage "_MG_$number1-hmerged.jpg"

Desafortunadamente, aunque esta solución elimina la barra blanca, está causando mucha variación en el centro mutuo de las imágenes, lo que resulta en una presentación final muy poco atractiva. A veces también está causando cultivos que eliminan detalles de la imagen. Veré las fórmulas y veré si puedo hacer una corrección que funcione.
Stephen

@Stephen Si es posible, proporcione algunas imágenes que causaron el problema.
Marco

0

Yo uso Irfanview64 en lugar de Imagemagick

  • Cuenta con herramientas de imagen flexibles.
  • inicie Miniaturas con "T" para iniciar la aplicación Miniaturas
  • puede navegar por la carpeta e incluso cargar desde> Editar agregar todas las subcarpetas <
  • las opciones para miniaturas son extensas
  • puede seleccionar muchas imágenes con Ctrl + clic en la tecla
  • luego> archivo> crear hoja de contactos) y ajuste el tamaño de la matriz x * y el espacio entre etc.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí


Aunque agradezco su respuesta, estoy usando ImageMagick en un gran lote de imágenes (más de 1200 y en crecimiento) y para una serie de otros pasos ... conversión, ajuste de temperatura, recorte automático, fusión, etiqueta, etc.en una gran secuencia de comandos conducta. No estoy particularmente inclinado a abandonarlo sobre una línea blanca de 3 píxeles.
Stephen

entendido ahora que mencionas esto.
Sunnyskyguy EE75
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.