จะขยายภาพขนาดย่อของโพสต์ที่แนะนำได้อย่างไร


11

สถานการณ์นี้คือ: ฉันใช้ปลั๊กอินภาพขนาดย่อของวิดีโอเพื่อรับและตั้งค่าภาพขนาดย่อของ youtube / vimeo เป็นภาพเด่นของโพสต์ ปัญหาคือขนาดภาพเริ่มต้น youtube / vimeo นั้นเล็กกว่าความกว้างของเนื้อหาหลักของธีมของฉันเล็กน้อย

ดังนั้นสิ่งที่ฉันต้องการคือการเพิ่มพวกเขา ถ้าฉันไปที่ Media Library ฉันสามารถแก้ไขภาพแต่ละภาพด้วยตนเองจากนั้นตั้งค่าความกว้างที่แน่นอนและ WordPress ปรับขนาดให้พอดี (ฉันไม่ทราบว่าคุณภาพแย่ลงเล็กน้อย) ดังนั้นมีวิธีที่ WP จะทำโดยอัตโนมัติทุกครั้งที่มีการอัพโหลดภาพ?

นี่คือขนาดภาพที่ฉันกำหนด: add_image_size('post-full', 688, 320, true);ขนาดนิ้วหัวแม่มือ Vimeo คือ 640x320


1
นี่คือปลั๊กอินที่ฉันเขียนขึ้นเพื่อลดขนาดภาพย่อขนาดขึ้นอยู่กับการแก้ปัญหาโดย levi และการแก้ไขโดย jackrugile wordpress.org/support/plugin/thumbnail-upscale
khromov

คำตอบ:


20

คุณสามารถใช้ฟังก์ชันWordpress image_resize ดั้งเดิมเพื่อขยายภาพ Wordpress มีตะขอที่เรียกว่า " image_resize_dimensions " ซึ่งคุณสามารถใช้เพื่อเขียนทับการตั้งค่าการครอบตัดเริ่มต้น นี่คือฟังก์ชั่นที่ปรับเปลี่ยนซึ่งจะรองรับการขยายขนาด:

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

ตอนนี้ขอฟังก์ชั่นนี้ด้วย:

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

เมื่อทำเสร็จแล้วคุณสามารถใช้ฟังก์ชั่นimage_resizeเพื่อปรับขนาดภาพขึ้นหรือลงตามต้องการ

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

ฉันใช้วิธีนี้ แต่เมื่อฉันลองและสร้างภาพที่ครอบตัดแล้วฉันเพิ่งได้รับข้อผิดพลาด: Image Editor Save Failed - มีแนวคิดใดบ้าง
เฟลิกซ์อีฟ

ยังคงใช้งานได้ดีในเดือนกรกฎาคม 2558 ด้วย Wordpress 4.1.5 สิ่งที่ฉันต้องการเพื่อให้แน่ใจว่าภาพเล็ก ๆ จะถูกปรับขนาดสำหรับรูปภาพเด่นของโพสต์
Mark Rummel

สำหรับผู้ที่ต้องการสนับสนุนตัวเลือกตำแหน่งการเพาะปลูกเพิ่มรหัสต่อไปนี้ก่อนที่จะกลับมาของฟังก์ชั่น: 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

ยังคงใช้งานได้ดีในเดือนเมษายน 2019 ด้วย Wordpress 5.1.1 add_image_sizeฉันจะใช้มันเพื่อบังคับให้ภาพหรูที่มีขนาดเล็กกว่าที่กำหนดเองของฉันต้องการ พร้อมกับปลั๊กอินสร้างภาพย่อขนาดเล็ก
Mtxz

วิธีการทำให้มันใช้งานได้กับadd_image_sizeฟังก์ชั่น?
Gediminas

0

วิธีที่ง่ายที่สุดคือการเพิ่มขนาดภาพด้วย 640x298 และใช้ css เพื่อปรับขนาด มาตราส่วนเบราว์เซอร์ควรทำงานได้ค่อนข้างดี

น่าเสียดายที่ปลั๊กอินทั้งหมดที่ฉันรู้จักไม่มีการลดขนาดภาพเพียงแค่สร้างขนาดรูปภาพที่เล็กลงดังนั้นหากคุณต้องการมี 688x320 บนเซิร์ฟเวอร์ของคุณคุณจะต้องแก้ไขปลั๊กอินที่มีอยู่หนึ่งรายการ

หากคุณติดตั้ง Imagick คุณสามารถแก้ไขปลั๊กอินในไฟล์ video-thumbnails.php ที่บรรทัดที่ 325 สร้างภาพขนาดย่อที่ใหญ่กว่าโดยใช้รหัสนี้:

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

และปล่อยให้ wordpress สร้างภาพย่อที่เล็กกว่า (ตัดความสูง) ตรวจสอบให้แน่ใจว่าได้สร้างอิมเมจที่แตกต่างกันสำหรับ Videoplatforms ที่แตกต่างกันใน Imagick Code ของคุณ!


ฉันคิดว่าฉันจะไปกับการแก้ไข CSS ตอนนี้มันเป็นวิธีที่ง่ายที่สุด / เร็วที่สุดที่จะไปกับสถานการณ์ของฉัน ฉันตรวจสอบไฟล์ WP core ด้วยและดูเหมือนว่าฟังก์ชั่นปรับขนาดใช้ min (); เพื่อกำหนดความกว้าง / ความสูงขั้นต่ำและไม่มีตะขอที่จะแก้ไขสิ่งนั้นดังนั้นมันจะไม่ทำให้ภาพของฉันอัปเกรดขึ้นมา
evaqas

มีตะขอที่คุณสามารถใช้เรียกว่า "image_resize_dimensions" ซึ่งจะช่วยให้คุณสามารถเขียนฟังก์ชั่นใหม่ได้โดยไม่ต้องใช้นาที ()
levi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.