Como aumentar a miniatura da postagem em destaque?

11

A situação é a seguinte: estou usando o plug-in Miniaturas de vídeo para obter e definir automaticamente miniaturas do youtube / vimeo como postar imagem em destaque. O problema é que os tamanhos padrão das miniaturas do youtube / vimeo são um pouco menores que a largura do conteúdo principal do meu tema.

Então, o que eu preciso é escalá-los. Se eu for para a Biblioteca de mídia, posso editar cada imagem manualmente, em seguida, defina minha largura exata e o WordPress a dimensionará da maneira certa (não me importo que a qualidade seja um pouco pior). Então, existe uma maneira de o WP fazer isso automaticamente sempre que uma imagem é carregada?

Este é o tamanho da minha imagem definida: o add_image_size('post-full', 688, 320, true);tamanho do polegar do Vimeo é 640x320.

evaqas
fonte
1
Aqui está um plug-in que escrevi para aumentar o tamanho das miniaturas, com base na solução levi e nas correções jackrugile. wordpress.org/support/plugin/thumbnail-upscale
Khromov

Respostas:

20

Você pode usar a função nativa image_resize do Wordpress para ampliar as imagens. O Wordpress fornece um gancho chamado " image_resize_dimensions ", que você pode usar para substituir as configurações de corte padrão. Aqui está uma função modificada que oferecerá suporte à expansão:

function image_crop_dimensions($default, $orig_w, $orig_h, $new_w, $new_h, $crop){
    if ( !$crop ) return null; // let the wordpress default function handle this

    $aspect_ratio = $orig_w / $orig_h;
    $size_ratio = max($new_w / $orig_w, $new_h / $orig_h);

    $crop_w = round($new_w / $size_ratio);
    $crop_h = round($new_h / $size_ratio);

    $s_x = floor( ($orig_w - $crop_w) / 2 );
    $s_y = floor( ($orig_h - $crop_h) / 2 );

    return array( 0, 0, (int) $s_x, (int) $s_y, (int) $new_w, (int) $new_h, (int) $crop_w, (int) $crop_h );
}

Agora conecte esta função da seguinte maneira:

add_filter('image_resize_dimensions', 'image_crop_dimensions', 10, 6);

Uma vez que isso é feito, você pode usar o image_resize função para imagens em escala para cima ou para baixo, conforme necessário.

$cropped_image = image_resize($image_filepath, $width, $height, true);
levi
fonte
No entanto, estou usando esse método quando tento gerar a imagem cortada e recebo o erro: Falha ao salvar o Editor de Imagens - alguma idéia?
perfil completo de Felix Eve
Ainda funciona muito bem em julho de 2015 com o Wordpress 4.1.5. Exatamente o que eu precisava para garantir que imagens pequenas fossem ampliadas para as Imagens em destaque das minhas postagens.
Mark Rummel
Para aqueles que procuram apoiar a opção posição cortar, adicionar o seguinte código logo antes do retorno da função: if( is_array( $crop ) ) { if( $crop[ 0 ] === 'left' ) { $s_x = 0; } else if( $crop[ 0 ] === 'right' ) { $s_x = $orig_w - $crop_w;} if( $crop[ 1 ] === 'top' ) { $s_y = 0; } else if( $crop[ 1 ] === 'bottom' ) { $s_y = $orig_h - $crop_h; } }
jackrugile
Ainda funciona muito bem em abril de 2019 com o Wordpress 5.1.1. Eu o uso para forçar imagens sofisticadas menores que o meu costume desejado add_image_size. Junto com o plug-in Regenerar miniaturas.
Mtxz
como fazê-lo funcionar com add_image_sizefunção?
Gediminas
0

a maneira mais fácil seria adicionar um tamanho de imagem com 640x298 e usar css para redimensioná-lo. como é apenas uma escala menor, o dimensionamento do navegador deve funcionar bastante bem.

infelizmente, todos os plugins que conheço não fornecem aumento de imagem, apenas gerando tamanhos de imagem menores; portanto, se você quiser ter o 688x320 em seu servidor, precisará editar um dos plug-ins existentes.

se você tiver o Imagick instalado, poderá alterar seu plug-in no arquivo video-thumbnails.php na linha 325, gerando uma versão maior da miniatura, usando este código:

$image_big = new Imagick();
$image_big->setOption('jpeg:size', '688x344');
$image_big->readImage($new_thumbnail);

$upload = wp_upload_bits( basename( $new_thumbnail ), null, $image_big );

e deixe o wordpress gerar a miniatura menor (cortando a altura). Certifique-se de criar diferentes tamanhos de imagem para as diferentes plataformas de vídeo em seu código Imagick!

fischi
fonte
Acho que vou usar a correção CSS agora, é realmente a maneira mais fácil / rápida de seguir minha situação. Também verifiquei os arquivos principais do WP e parece que a função de redimensionamento usa min (); para determinar a largura / altura mín. e não há ganchos para modificá-lo, por isso não aumentará as minhas imagens no upload.
Evaqas
Existe um gancho que você pode usar chamado "image_resize_dimensions" que permitirá reescrever a função sem min ().
levi