Existe um poderoso conjunto de imagens chamado ImageMagick. Entre suas ferramentas, você pode encontrar um utilitário display
, que é usado, como é óbvio a partir de seu nome, para exibir vários formatos gráficos do console. Aqui estão vários exemplos de seu uso:
display -geometry 500x500 image.png
Isso abrirá sua imagem na janela com o tamanho selecionado. Além disso, uma pequena janela representando a imagem completa será aberta por perto, para que você possa mover o retângulo de seleção para mostrar as partes desejadas da sua imagem.
display -extract 300x300+50+50 image.png
Este comando mostrará a parte da sua imagem com o tamanho de 300x300 pixels e com o deslocamento de 50 pixels a partir do canto superior esquerdo.
Você pode encontrar a lista completa de suas opções em man display
. Também há um extenso manual aqui .
O ImageMagick também oferece outras ferramentas úteis. Por exemplo, isso mostrará as informações sobre a imagem (seu tipo, dimensões, tamanho):
identify "my image.png"
Para exibir sua imagem sem as margens, devemos medi-las para cortá-las mais tarde. Eu abri sua foto fictícia no Gimp para tornar as coisas mais rápidas. Então as margens são:
Left - 1070px
Right - 880px
Top - 70px
Bottom - 100px
Se o tamanho original da foto for 8640x960
, o tamanho da imagem sem as margens será: X=8640-1070-880=6690
e Y=960-70-100=790
, ou seja, 6690x790
.
E agora combinaremos as opções -geometry
e -extract
para produzir a saída:
display -geometry 500x500 -extract 6690x790+1070+70 raw.png
(ajuste o tamanho da janela de saída para 500x500, corte a imagem no novo tamanho 6690x790 e desloque a área de corte em 1070px na horizontal e em 70px verticalmente a partir do canto superior esquerdo da imagem).
Aqui está o que eu tenho (movi a seleção para a direita para mais clareza):
Todosessescálculossãoumpoucotediosos,massevocêtemmargensestáticas(parecequesuasimagenssãoproduzidasautomaticamente),entãovocêpodecalculá-lasumavezeaplicá-lasatodasassuasimagens.Ouatémesmofazeralgumscriptparaautomatizarisso(queéumaversãomelhoradadoscript-elecalculaaiteraçãousandoocomandoidentify
doImageMagick):
#!/bin/bashif[$#-lt2];thenecho"usage: reviewimage output_resolution image_name" ; exit ; fi
OUTRES=$1
IMAGE=$2
# Some sanity or error checks, change as you see fit
if [ $OUTRES -lt 100 ] || [ $OUTRES -gt 1000 ] ; then echo "error: Invalid resolution" ; exit ; fi
if ! [ -e "$IMAGE" ] ; then echo "error: Image doesn't exist" ; exit ; fi
SHIFT=50 # Relative position of output window from top left corner of the desktop
IMAGE_X=$(identify "$IMAGE" | grep -o '[0-9]*x960 ' | cut -d'x' -f1)
IMAGE_Y=960
ITER=$(( $IMAGE_X / 960 ))
MARGIN_T=70
MARGIN_B=100
MARGIN_L=$(( -5 + $ITER * 119 ))
MARGIN_R=$(( -40 + $ITER * 102 ))
EXTRACT_X=$(( $IMAGE_X - $MARGIN_L - $MARGIN_R ))
EXTRACT_Y=$(( $IMAGE_Y - $MARGIN_T - $MARGIN_B ))
display -geometry ${OUTRES}x${OUTRES}+${SHIFT}+${SHIFT} -extract ${EXTRACT_X}x${EXTRACT_Y}+${MARGIN_L}+${MARGIN_T} "$IMAGE"
Salve este script com o nome reviewimage
em algum lugar. Em seguida, execute os comandos abaixo:
sudo cp reviewimage /usr/local/bin/
sudo chmod 755 /usr/local/bin/reviewimage
Agora você pode chamar este comando de todas as pastas com suas imagens. Por exemplo, para abrir uma pré-visualização da sua imagem raw10.png
com o tamanho de 700x700
:
reviewimage 700 raw10.png
Se o nome tiver espaços, use aspas:
reviewimage 700 "raw 2.png"
Se a fórmula de cálculo de margem se tornar imprecisa com altas iterações, você poderá usar uma matriz de valores de margem. Ajuste cada valor de margem como achar melhor. O script abaixo mostra o princípio. Está preenchido com os valores das iterações 1-10, adicione mais dentro dos parênteses com o espaço como um divisor:
#!/bin/bash
if [ $# -ne 1 ] ; then echo "usage: convertimage image_name" ; exit ; fi
if ! [ -e "$1" ] ; then echo "error: Image doesn't exist" ; exit ; fi
IMAGE=$1
IMAGE_X=$(identify "$IMAGE" | grep -o '[0-9]*x960 ' | cut -d'x' -f1)
IMAGE_Y=960
ITER=$(( $IMAGE_X / 960 ))
MARGIN_T=70
MARGIN_B=100
MARGIN_L=(0 114 233 352 471 590 709 828 947 1066 1185)
MARGIN_R=(0 80 180 280 380 480 580 680 780 880 980)
EXTRACT_X=$(( $IMAGE_X - ${MARGIN_L[$ITER]} - ${MARGIN_R[$ITER]} ))
EXTRACT_Y=$(( $IMAGE_Y - $MARGIN_T - $MARGIN_B ))
convert "$IMAGE" -crop ${EXTRACT_X}x${EXTRACT_Y}+${MARGIN_L[$ITER]}+${MARGIN_T} "${IMAGE%.png}_cropped.png"
Esse script executa o recorte da imagem em vez de exibi-la, portanto, essa imagem convertida pode ser visualizada em qualquer programa. Precisa apenas de um parâmetro - nome da imagem:
convertimage "raw 9.png"