jpegtran - sem perda da parte esquerda da imagem

3

Eu tenho uma imagem de 1400x1400 na qual quero aparar 4 pixels à esquerda, 1 na parte inferior e, para manter proporções quadradas, 3 na parte superior. O problema é que, sempre que executo um corte com jpegtran , os pixels são removidos da parte inferior direita, não importa o que eu faça. Por exemplo, testando apenas a parte esquerda, tentei:

jpegtran -perfect -crop 1396x1400+0+0 -outfile crop.jpg image.jpg

mas isso apenas remove 4 pixels da direita;

jpegtran -perfect -crop 1396x1400-4+0 -outfile crop.jpg image.jpg

e isso novamente remove 4 pixels da direita;

jpegtran -perfect -crop 1396x1400+4+0 -outfile crop.jpg image.jpg

e isso não remove nenhum pixel; mais em geral,

jpegtran -perfect -crop 1396x1400+x+0 -outfile crop.jpg image.jpg

jpegtran -perfect -crop 1396x1400-x+0 -outfile crop.jpg image.jpg

com x entre 0 e 4, remove respectivamente 4 x e x pixels da direita. Com x maior que 5, obviamente, dá um erro. Eu não consegui nenhuma guarnição esquerda. Alguém pode me ajudar?

Estou usando jpegtran de libjpeg-turbo versão 1.4.2 (build 20151205) em um sistema Arch Linux x86_64.

    
por Jeffrey Lebowski 30.03.2016 / 12:11

1 resposta

3

jpegtran não pode ser cortado sem perdas com um incremento melhor do que o tamanho Unidade mínima codificada , que varia dependendo do canal e do modo de amostragem de croma . Vai ser 8 × 8, 16 × 8 ou 16 × 16.

Isso significa que o tamanho mínimo de corte deve ser um múltiplo par de 8 ou 16, dependendo da maneira como a imagem foi codificada. As exceções são as bordas direita e inferior quando as dimensões da imagem não são um múltiplo par de 8 ou 16 px. Nesse caso, você tem blocos parciais nas bordas direita e / ou inferior. Por exemplo, uma imagem de 17 × 17 pixels poderia ter um corte de 1px de suas bordas direita ou inferior, mas não 2px dessas bordas, nem 1px das bordas superior e esquerda.

Qualquer outra coisa requer a recodificação dos blocos cortados.

Citando o manual:

...lossless crop is restricted by the current JPEG format: the upper left corner of the selected region must fall on an iMCU boundary. If this does not hold for the given crop parameters, we silently move the upper left corner up and/or left to make it so, simultaneously increasing the region dimensions to keep the lower right crop corner unchanged. (Thus, the output image covers at least the requested region, but may cover more.)

    
por 30.03.2016 / 12:30