add_image_sizes ignorando os tamanhos de corte e usando a proporção

3

Antes de começarmos, a imagem é definitivamente grande o suficiente.

Eu tenho uma imagem que é 2206 x 2042 e desejo recortar (não escalar) de várias maneiras diferentes para serem usadas de maneira responsiva.

Os tamanhos que estou tentando produzir são:

add_image_size( 'artist-full-xs', 730, 1842, array('right', 'bottom') );
add_image_size( 'artist-full-xs-sm', 730, 1000, array('right', 'bottom') );
add_image_size( 'artist-full-xs-sm-2', 730, 600, array('right', 'bottom') );

A primeira imagem corta como é suposto, os dois seguintes escalam em vez de cortar. Isso é encontrado procurando na pasta de uploads, nada a ver com quaisquer problemas de templates.

@Andy Macauley-Brook A saída dos tamanhos reais é a seguinte:

730 x 1842 730 X 1000 730 x 600 Portanto, o corte real está funcionando apenas trabalhando proporcionalmente para os dois últimos, em vez de um corte real

Alguém sabe por que e pode me ajudar?

    
por wagg-matt 12.06.2016 / 18:21

1 resposta

8

WordPress "crop" não significa literalmente crop. Como em tirar uma imagem e cortar essa parte precisa do ponto especificado.

O que isso significa, grosso modo, é: redimensionar a imagem para ajustá-la da melhor maneira possível e, em seguida, cortar as partes que não couberem. Com efeito, isso significa que os resultados são afetados pela proporção da imagem de origem e do tamanho de destino.

A lógica exata está contida na função image_resize_dimensions() e resume por comentários incorporados da seguinte forma:

// crop the largest possible portion of the original image that we can size to $dest_w x $dest_h

Não apenas a parte exata , mas a maior parte possível do original.

Os passos exatos são matemáticos e não são muito amigáveis para ler e / ou explicar brevemente. De uma olhada rápida, o que parece acontecer é:

  1. A proporção da imagem original é calculada.
  2. Qual a melhor forma de ajustar o tamanho do alvo?
  3. Crop aplicado ao resultado da etapa anterior.

No seu caso específico, a diferença entre os tamanhos é que os dois primeiros são alto (altura maior) e o terceiro é largo (largura maior).

  • No primeiro caso, o original é dimensionado por altura , então a parte esquerda é cortada.
  • No último caso, o original é dimensionado por largura , então a parte topo é cortada.

Isso que leva a tamanhos diferentes. Como as proporções dos aspectos são diferentes, o WP se encaixa de forma original nelas de maneiras diferentes.

Se você olhar para eles lado a lado, é bem visível como essa lógica foi aplicada:

    
por Rarst 12.06.2016 / 19:07