web-dev-qa-db-fra.com

Comment faire évoluer la miniature de post vedette?

La situation est la suivante: j'utilise le plug-in Video Thumbnails pour obtenir et définir automatiquement les miniatures youtube/vimeo en tant qu'image sélectionnée. Le problème est que les tailles de miniatures youtube/vimeo par défaut sont juste un peu plus petites que la largeur du contenu principal de mon thème.

Donc, ce dont j'ai besoin, c'est de les mettre à l'échelle. Si je vais dans la médiathèque, je peux éditer chaque image manuellement, puis définir ma largeur exacte et WordPress la redimensionne parfaitement (la qualité est un peu pire, cela ne me dérange pas). Alors, y a-t-il un moyen pour que WP le fasse automatiquement chaque fois qu'une image est téléchargée?

Ceci est la taille de l'image que j'ai définie: add_image_size('post-full', 688, 320, true); La taille du pouce Vimeo est 640x320.

11
evaqas

Vous pouvez utiliser la fonction native Wordpress image_resize pour redimensionner les images. Wordpress fournit un crochet appelé " image_resize_dimensions " que vous pouvez utiliser pour écraser les paramètres de recadrage par défaut. Voici une fonction modifiée qui prendra en charge la mise à l'échelle:

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 );
}

Maintenant, accrochez cette fonction comme suit:

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

Une fois que c'est fait, vous pouvez utiliser la fonction image_resize pour agrandir ou réduire les images à votre guise.

$cropped_image = image_resize($image_filepath, $width, $height, true);
19
levi

le moyen le plus simple serait d'ajouter une taille d'image de 640x298 et d'utiliser CSS pour la redimensionner. comme il ne s'agit que d'une mise à l'échelle mineure, la mise à l'échelle du navigateur devrait fonctionner assez bien.

malheureusement, tous les plugins que je connais ne fournissent pas de redimensionnement d’image, ils ne génèrent que des tailles d’image plus petites, donc si vous voulez avoir le fichier 688x320 sur votre serveur, vous devrez éditer l’un des plugins existants.

si Imagick est installé, vous pouvez modifier votre plugin dans le fichier video-thumbnails.php à la ligne 325, en générant une version plus grande de la vignette, à l’aide de ce code:

$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 );

et laissez wordpress générer la plus petite vignette (en coupant la hauteur). Assurez-vous de créer des images de différentes tailles pour les différentes plateformes vidéo de votre code Imagick!

0
fischi