Comment faire pour agrandir la vignette de l'article vedette?

11

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 illustrée. Le problème est que les tailles de vignettes 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 redimensionner. 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). Donc, y a-t-il un moyen pour WP de le faire automatiquement chaque fois qu'une image est téléchargée?

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

    
posée evaqas 30.04.2012 - 17:10

2 réponses

17

Vous pouvez utiliser la fonction native image_resize de Wordpress pour agrandir les images. Wordpress fournit un crochet appelé " image_resize_dimensions " que vous pouvez utiliser pour remplacer les paramètres de rognage 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 cette opération effectuée, 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);
    
réponse donnée levi 12.09.2012 - 16:18
0

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 correctement.

Malheureusement, tous les plugins que je connais ne fournissent pas d’agrandissement d’image, mais seulement de générer des tailles d’image plus petites. Par conséquent, 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 à partir de celle-ci (réduction de la hauteur). Assurez-vous de créer des images de tailles différentes pour les différentes plateformes vidéo de votre code Imagick!

    
réponse donnée fischi 30.04.2012 - 17:35

Lire d'autres questions sur les étiquettes