Estou processando um grande lote de imagens que têm uma moeda prateada em um fundo preto. Primeiro eu cortei os arquivos calculando as dimensões de: trimbox=$(convert $f -fuzz 35% -format "%@" info:)
Eu adiciono 50 aos 2 primeiros parâmetros e 25 a cada um dos 2 últimos (para fazer com que mais da imagem original fique visível além do que o corte detecta). Eu testei removendo essas compensações sem diferença.
convert "$f" -crop "$trimbox" +repage "$baseFilename-trimmed.jpg"
Depois de aparado, estou 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 mesclar os arquivos. Eu tentei variantes com -background black ou -fill black sem sucesso.
O fino retângulo branco está aparecendo porque as duas imagens têm tamanhos ligeiramente diferentes.
Eu preferiria que eles fossem redimensionados de forma idêntica para que nenhuma correção fosse necessária, mas também aceitaria uma barra preta.
Amostras de arquivos:
- Arquivo original 1
- Arquivo original 2
- Arquivo recortado 1
- Arquivo recortado 2
- Arquivo mesclado 1
- Arquivo mesclado 2
É claro que vê-los em um fundo branco obscurece o que estou falando.
Responder1
Este script deve fazer o que você deseja. Ele usa a largura máxima ou a altura máxima das imagens ao 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"
Responder2
Eu uso Irfanview64 em vez de Imagemagick
- Possui ferramentas de imagem flexíveis
- inicie Miniaturas com "T" para iniciar o aplicativo Miniaturas
- você pode navegar pela pasta e até mesmo carregar de>Editar, adicionar todas as subpastas<
- as opções de miniaturas são extensas
- você pode selecionar muitas imagens com a tecla Ctrl + clique
- então >arquivo>criar folha de contato) e ajuste o tamanho do array x*y e o espaço entre etc etc