Normalmente, quando você define um tamanho de imagem personalizado usando o recorte rígido - por exemplo add_image_size( 'custom-size', 400, 400, true );
-, obtém os seguintes resultados:
- # 1 Imagem carregada: 600x500> Miniatura: 400x400.
- # 2 Imagem carregada: 500x300> Miniatura: 400x300.
- # 3 Imagem carregada: 300x200> Miniatura: 300x200.
No entanto, o que eu gostaria de fazer é quando a imagem carregada for menor que a largura ou altura definida ou ambas do tamanho da imagem personalizada, por exemplo, exemplos 2 e 3 acima - em vez de a imagem ser cortada apenas para caber dentro dessas dimensões - também é cortada para corresponder à proporção (que neste caso é 1: 1), da seguinte forma:
- # 1 Imagem carregada: 600x500> Miniatura: 400x400.
- # 2 Imagem carregada: 500x300> Miniatura: 300x300 .
- # 3 Imagem carregada: 300x200> Miniatura: 200x200 .
Não acredito que isso seja possível usando as opções add_image_size padrão, mas é possível usar uma função diferente ou um gancho que modifique a função add_image_size?
Ou existe um plug-in que adiciona essa funcionalidade?
Qualquer informação que alguém possa fornecer seria muito apreciada.
add_image_size
para fazer o que descrevi acima. Tenho certeza de que isso não é possível usando os parâmetros padrão, mas espero que seja possível usando um gancho, ação ou filtro.Respostas:
Você está certo que simplesmente não funciona assim.
Se não for bom pensar em sua pergunta ao contrário, você pode obter o resultado certo nos navegadores modernos usando uma seleção de tamanhos de imagem e imagens responsivas.
Se você usar código como este:
... e nos seus modelos algo como:
... então, por padrão (WP 4.4 e posterior), você obterá uma tag de imagem com a versão menor do seu conjunto, com os
src
tamanhos maiores e nosrcset
atributo, dos quais os navegadores mais novos escolherão e exibirão a maior versão apropriada.Então, se uma imagem em particular não tem uma versão maior, isso não importa. Uma imagem criada
300x200
terá uma200x200
versão criada, essa será a única no HTML e todos os navegadores a exibirão.Eu trabalhei nisso ajustando imagens responsivas para obter um bom desempenho em navegadores que suportam apenas
src
e nãosrcset
.fonte
Essa não é uma solução muito boa, pois é uma solução CSS mais recente e funciona apenas em 78,9% dos navegadores dos usuários , mas existem alguns polyfills que podem superar essas imagens e imagens de ajuste de objeto.
Idealmente, seria melhor se as imagens menores fossem dimensionadas proporcionalmente no upload, mas não consegui descobrir uma solução para isso.
fonte