Como ampliar a miniatura de postagem em destaque?

11

A situação é a seguinte: estou usando o plugin Video Thumbnails para obter e configurar automaticamente as miniaturas do youtube / vimeo como imagem pós-exibida. O problema é que os tamanhos de miniatura padrão 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 à Biblioteca de Mídia, posso editar cada imagem manualmente, depois definir minha largura exata e o WordPress ajusta-a para a direita (não me importo que a qualidade seja um pouco pior). Então, existe uma maneira que o WP faria isso automaticamente cada vez que uma imagem é carregada?

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

    
por evaqas 30.04.2012 / 17:10

2 respostas

17

Você pode usar a função nativa do Wordpress image_resize para ampliar imagens. O Wordpress fornece um hook chamado " image_resize_dimensions " que você pode usar para sobrescrever as configurações padrão de recorte. Aqui está uma função modificada que suportará o aumento de escala:

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 essa função da seguinte forma:

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

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

$cropped_image = image_resize($image_filepath, $width, $height, true);
    
por levi 12.09.2012 / 16:18
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 escalonamento do navegador deve funcionar muito bem.

infelizmente, todos os plugins que eu conheço não fornecem upscaling de imagem, apenas gerando tamanhos de imagem menores, então se você quiser ter o 688x320 no seu servidor, você teria que editar um dos plugins existentes.

se você tiver o Imagick instalado, você pode alterar o seu plugin 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 a partir dele (cortando a altura). Certifique-se de fazer Imagesizes diferentes para os diferentes Videoplatform no seu Código Imagick!

    
por fischi 30.04.2012 / 17:35