it-swarm.com.de

Wie skaliere ich ein Thumbnail für einen Beitrag?

Die Situation ist folgende: Ich verwende das Plugin für Video-Thumbnails, um YouTube-/Vimeo-Thumbnails automatisch als Post-Featured-Image abzurufen und festzulegen. Das Problem ist, dass die standardmäßigen Youtube/Vimeo-Miniaturansichten etwas kleiner sind als die Breite meines Hauptinhalts.

Also muss ich sie vergrößern. Wenn ich zur Medienbibliothek gehe, kann ich jedes Bild manuell bearbeiten, dann meine exakte Breite festlegen und WordPress skaliert es genau richtig (es macht mir nichts aus, dass die Qualität etwas schlechter ist). Gibt es also eine Möglichkeit, dass WP dies bei jedem Hochladen eines Bildes automatisch tut?

Dies ist meine definierte Bildgröße: add_image_size('post-full', 688, 320, true); Die Vimeo-Daumengröße beträgt 640x320.

11
evaqas

Sie können die native Wordpress image_resize - Funktion verwenden, um Bilder zu skalieren. Wordpress bietet einen Hook mit dem Namen " image_resize_dimensions ", mit dem Sie die Standardeinstellungen für das Zuschneiden überschreiben können. Hier ist eine modifizierte Funktion, die das Skalieren unterstützt:

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

Haken Sie nun diese Funktion wie folgt ein:

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

Danach können Sie die Funktion image_resize verwenden, um Bilder nach Bedarf zu vergrößern oder zu verkleinern.

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

am einfachsten wäre es, eine Bildgröße von 640 x 298 hinzuzufügen und die Größe mithilfe von CSS zu ändern. Da es sich nur um eine geringfügige Vergrößerung handelt, sollte die Browserskalierung recht gut funktionieren.

leider bieten alle mir bekannten Plugins keine Bild-Upscaling-Funktion, sondern erzeugen nur kleinere Bildgrößen. Wenn Sie also die 688x320 auf Ihrem Server haben möchten, müssen Sie eines der vorhandenen Plugins bearbeiten.

wenn Sie Imagick installiert haben, können Sie Ihr Plugin in der Datei video-thumbnails.php in Zeile 325 ändern und eine größere Version des Thumbnails mit folgendem Code erstellen:

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

und lassen Sie WordPress das kleinere Vorschaubild daraus generieren (die Höhe schneiden). Achten Sie darauf, in Ihrem Imagick-Code unterschiedliche Bildgrößen für die verschiedenen Videoplattformen zu erstellen!

0
fischi