Cum să mărești dimensiunea miniaturii articolului?

30 apr. 2012, 18:10:36
Vizualizări: 20.8K
Voturi: 13

Situația este următoarea: Folosesc plugin-ul Video Thumbnails pentru a prelua și seta automat miniaturile YouTube/Vimeo ca imagine reprezentativă pentru articol. Problema este că dimensiunile implicite ale miniaturilor YouTube/Vimeo sunt puțin mai mici decât lățimea conținutului principal al temei mele.

Așadar, am nevoie să le măresc dimensiunea. Dacă mă duc în Biblioteca Media, pot edita manual fiecare imagine, apoi să setez lățimea exactă dorită și WordPress o redimensionează corect (nu mă deranjează că calitatea este puțin mai slabă). Există vreo modalitate prin care WordPress să facă acest lucru automat de fiecare dată când se încarcă o imagine?

Aceasta este dimensiunea imaginii definită de mine: add_image_size('post-full', 688, 320, true); Dimensiunea miniaturii Vimeo este 640x320.

1
Comentarii

Iată un plugin pe care l-am scris pentru mărirea miniaturilor, bazat pe soluția lui levi și corecțiile lui jackrugile. https://wordpress.org/support/plugin/thumbnail-upscale

khromov khromov
27 iul. 2015 00:41:53
Toate răspunsurile la întrebare 2
6
24

Puteți utiliza funcția nativă WordPress image_resize pentru a redimensiona imaginile. WordPress oferă un hook numit "image_resize_dimensions" pe care îl puteți utiliza pentru a suprascrie setările implicite de tăiere. Iată o funcție modificată care va permite și mărirea imaginilor:

function image_crop_dimensions($default, $orig_w, $orig_h, $new_w, $new_h, $crop){
    if ( !$crop ) return null; // lăsăm funcția implicită WordPress să gestioneze acest caz

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

Acum conectați această funcție astfel:

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

Odată ce ați făcut acest lucru, puteți utiliza funcția image_resize pentru a mări sau micșora imaginile după necesități.

$cropped_image = image_resize($image_filepath, $width, $height, true);
12 sept. 2012 17:18:06
Comentarii

Folosesc această metodă, însă când încerc să generez imaginea decupată primesc doar eroarea: Image Editor Save Failed - aveți idei?

Felix Eve Felix Eve
17 apr. 2013 11:22:26

Încă funcționează perfect în iulie 2015 cu WordPress 4.1.5. Exact ce aveam nevoie pentru a mă asigura că imaginile mici sunt scalate pentru imaginile reprezentative ale postărilor mele.

Mark Rummel Mark Rummel
11 iul. 2015 15:42:11

Pentru cei care doresc să adauge suport pentru opțiunea de poziționare a decupării, adăugați următorul cod chiar înainte de return al funcției:

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 jackrugile
25 iul. 2015 00:43:01

Încă funcționează perfect în aprilie 2019 cu WordPress 5.1.1. Îl folosesc pentru a forța scalarea imaginilor care sunt mai mici decât dimensiunea personalizată dorită cu add_image_size. Împreună cu pluginul Regenerate Thumbnails.

Mtxz Mtxz
11 apr. 2019 04:18:47

cum să-l faci să funcționeze cu funcția add_image_size?

Gediminas Gediminas
16 aug. 2019 14:53:56

încă funcționează în WP 5.7

pathfinder pathfinder
22 mar. 2021 04:40:06
Arată celelalte 1 comentarii
2

cea mai ușoară metodă ar fi să adăugați o dimensiune de imagine de 640x298 și să folosiți CSS pentru a o redimensiona. Deoarece este doar o mărire minoră, scalarea în browser ar trebui să funcționeze destul de bine.

Din păcate, toate plugin-urile pe care le cunosc nu oferă mărirea imaginilor, ci doar generarea dimensiunilor mai mici, așa că dacă doriți să aveți 688x320 pe server, va trebui să modificați unul dintre plugin-urile existente.

Dacă aveți Imagick instalat, puteți modifica plugin-ul în fișierul video-thumbnails.php la linia 325, generând o versiune mai mare a thumbnail-ului, folosind acest cod:

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

și lăsați WordPress să genereze thumbnail-ul mai mic din aceasta (tăind înălțimea). Asigurați-vă că creați dimensiuni diferite de imagini pentru diferitele platforme de videoclipuri în codul Imagick!

30 apr. 2012 18:35:25
Comentarii

Cred că voi merge cu soluția CSS pentru moment, este într-adevăr cea mai ușoară/rapidă modalitate în situația mea. Am verificat și fișierele de bază ale WP și se pare că funcția de redimensionare folosește min(); pentru a determina lățimea/înălțimea minimă și nu există hook-uri pentru a modifica asta, așa că nu va mări imaginile mele la încărcare.

evaqas evaqas
1 mai 2012 09:49:51

Există un hook numit "image_resize_dimensions" pe care îl poți folosi pentru a rescrie funcția fără min().

levi levi
6 sept. 2012 19:34:03