Bagaimana cara meningkatkan thumbnail posting yang ditampilkan?


11

Situasinya adalah ini: Saya menggunakan plugin Video Thumbnails untuk secara otomatis mendapatkan dan mengatur thumbnail youtube / vimeo sebagai gambar posting fitur. Masalahnya adalah ukuran thumbnail standar youtube / vimeo hanya sedikit lebih kecil dari lebar konten utama tema saya.

Jadi yang saya butuhkan adalah meningkatkannya. Jika saya pergi ke Media Library, saya dapat mengedit setiap gambar secara manual, kemudian mengatur lebar persis saya dan WordPress meningkatkannya dengan tepat (Saya tidak keberatan bahwa kualitasnya sedikit lebih buruk). Jadi adakah cara WP melakukan itu secara otomatis setiap kali sebuah gambar diunggah?

Ini adalah ukuran gambar yang saya tetapkan: add_image_size('post-full', 688, 320, true);Ukuran ibu jari Vimeo adalah 640x320.


1
Berikut ini adalah plugin yang saya tulis untuk meningkatkan thumbnail, berdasarkan solusi oleh levi dan perbaikan oleh jackrugile. wordpress.org/support/plugin/thumbnail-upscale
khromov

Jawaban:


20

Anda dapat menggunakan fungsi image_resize asli Wordpress untuk meningkatkan gambar. Wordpress menyediakan hook yang disebut " image_resize_dimensions " yang dapat Anda gunakan untuk menimpa pengaturan pemotongan default. Berikut adalah fungsi yang dimodifikasi yang akan mendukung peningkatan:

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

Sekarang kaitkan fungsi ini seperti ini:

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

Setelah selesai, Anda dapat menggunakan fungsi image_resize untuk memperbesar atau memperkecil gambar sesuai kebutuhan.

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

Saya menggunakan metode ini namun ketika saya mencoba dan menghasilkan gambar yang dipotong maka saya baru saja mendapatkan kesalahan: Image Editor Save Failed - ada ide?
Felix Eve

Masih berfungsi dengan baik pada bulan Juli 2015 dengan Wordpress 4.1.5. Persis seperti yang saya butuhkan untuk memastikan gambar kecil ditingkatkan untuk Gambar Unggulan tulisan saya.
Mark Rummel

Bagi mereka yang ingin mendukung opsi posisi krop, tambahkan kode berikut tepat sebelum kembalinya fungsi: 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

Masih berfungsi dengan baik April 2019 dengan Wordpress 5.1.1. Saya menggunakannya untuk memaksa gambar kelas atas yang lebih kecil dari kebiasaan saya yang diinginkan add_image_size. Bersamaan dengan plugin Regenerate Thumbnails.
Mtxz

bagaimana membuatnya berfungsi dengan add_image_sizefungsi?
Gediminas

0

cara termudah adalah menambahkan ukuran gambar dengan 640x298, dan menggunakan css untuk mengubah ukurannya. karena ini hanya peningkatan skala kecil, penskalaan browser harus bekerja dengan baik.

sayangnya, semua plugin yang saya tahu tidak menyediakan peningkatan gambar, hanya menghasilkan ukuran gambar yang lebih kecil, jadi jika Anda ingin memiliki 688x320 di server Anda, Anda harus mengedit salah satu plugin yang ada.

jika Anda memasang Imagick, Anda dapat mengubah plugin Anda dalam file video-thumbnails.php on line 325, menghasilkan versi thumbnail yang lebih besar, menggunakan kode ini:

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

dan biarkan wordpress menghasilkan thumbnail yang lebih kecil darinya (memotong ketinggian). Pastikan untuk membuat Imagesizes berbeda untuk Videoplatforms berbeda di Imagick Code Anda!


Saya pikir saya akan pergi dengan memperbaiki CSS sekarang, itu benar-benar cara termudah / tercepat untuk melanjutkan situasi saya. Saya juga memeriksa file-file inti WP dan tampaknya fungsi pengubahan ukuran menggunakan min (); untuk menentukan min lebar / tinggi dan tidak ada kait untuk memodifikasinya, jadi tidak akan meningkatkan gambar saya saat diunggah.
evaqas

Ada kait yang dapat Anda gunakan yang disebut "image_resize_dimensions" yang akan memungkinkan Anda menulis ulang fungsi tanpa min ().
levi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.