Contexto: precisei de digitalizar um livro. O digitalizador não permitia (de modo simples) criar um formato de documento ajustado ao tamanho das páginas do livro. Fiquei então com um ficheiro PDF com as dimensões 1653x1169, no entanto só o retângulo situado no entanto o que digitalizei encontrava-se no superior esquerdo desta imagem (um retângulo de 735x909), sendo o resto branco [seria preto se não tivesse colocado uma máscara de papel no digitalizador]. Como resolver este problema sem demorar muito tempo.
Plano
Separar o documento PDF por páginas, criando tantos ficheiros quantas as páginas do livro
nome a atribuir aos ficheiros: 1.pdf, 2.pdf, 3.pdf, ...
converter cada um dos ficheiros pdf em imagens png. Depois da conversão ficaria com
1.png, 2.png, 3.png, ...
para fazer isto uso
ps2pdf 1.pdf 1.png
Para otimizar preciso de criar um script (quando tiver + tempo explico como se faz)
cortar todas as imagens
converter de novo as imagens para pdf
juntar todas as imagens num único ficheiro
(vou avançar por falta de tempo)
Vamos à parte do corte da imagem e passo à generalização de qualquer canto
sejam as coordenadas da imagem toda (x,y) e a parte da imagem que eu quero cortar (extrair da imagem original) tem as dimensões axb
x,y --> coordenadas da imagem toda
C1(a,0)
C2(0,b)
C3(a,0)
C4(a,b)
c=x-a
d=y-b
Cortar canto superior direito
convert imagem.png -crop 0xb+c+0 csd.png
Cortar canto superior esquerdo
convert imagem.png -crop axb+0+0 cse.png
Cortar canto inferior direito
convert imagem.png -crop ax0+0+b cid.png
Cortar canto inferior esquerdo
convert imagem.png -crop +a+b cie.png
Exemplo
x=1653, y=1169; a=735, b=909
c=1653-735 = 918
d=1169-909=260
Cortar canto superior direito
convert imagem.png -crop 0x909+918+0 csd.png
Cortar canto superior esquerdo
convert imagem.png -crop 735x909+0+0 cse.png
Cortar canto inferior direito
convert imagem.png -crop 735x0+0+b cid.png
Cortar canto inferior esquerdo
convert imagem.png -crop +735+909 cie.png
Claro que se pode generalizar para partes da imagem que não sejam cantos.
Ver