कैसे चित्रित पोस्ट थंबनेल को स्केल करने के लिए?


11

स्थिति यह है: मैं स्वतः थंबनेल पाने के लिए वीडियो थंबनेल प्लगइन का उपयोग कर रहा हूं और पोस्ट की गई छवि के रूप में youtube / vimeo थंबनेल सेट कर रहा हूं। समस्या यह है कि डिफ़ॉल्ट youtube / vimeo थंबनेल आकार मेरे विषय मुख्य सामग्री की चौड़ाई से बस थोड़ा छोटा है।

इसलिए मुझे उनकी आवश्यकता है कि मैं उन्हें बढ़ाऊं। यदि मैं मीडिया लाइब्रेरी में जाता हूं, तो मैं प्रत्येक छवि को मैन्युअल रूप से संपादित कर सकता हूं, फिर मेरी सटीक चौड़ाई निर्धारित करें और वर्डप्रेस इसे सही तरीके से सेट करें (मुझे नहीं लगता कि गुणवत्ता थोड़ी खराब है)। तो क्या कोई ऐसा तरीका है जिससे WP हर बार एक छवि अपलोड होने पर स्वचालित रूप से करेगा?

यह मेरी परिभाषित छवि आकार है: add_image_size('post-full', 688, 320, true);Vimeo अंगूठे का आकार 640x320 है।


1
यहाँ एक प्लगइन है जो मैंने लेवी द्वारा समाधान और कटहल द्वारा सुधार के आधार पर अपकमिंग थंबनेल के लिए लिखा था। 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);

एक बार जब आप यह कर लेते हैं, तो आप आवश्यकतानुसार इमेजेज पैमाने पर इमेजेज को ऊपर या नीचे स्केल करने के लिए उपयोग कर सकते हैं ।

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

मैं इस पद्धति का उपयोग तब कर रहा हूं जब मैं कोशिश करता हूं और क्रॉप की गई छवि उत्पन्न करता हूं तो मुझे बस त्रुटि मिलती है: छवि संपादक सहेजें विफल - कोई विचार?
फेलिक्स ईव

अभी भी वर्डप्रेस 4.1.5 के साथ जुलाई 2015 में शानदार काम करता है। वास्तव में मुझे अपने पोस्ट की चुनिंदा छवियों के लिए छोटे चित्रों को सुनिश्चित करने के लिए क्या चाहिए था।
मार्क रूमेल

फसल की स्थिति के विकल्प का समर्थन करने वालों के लिए, फ़ंक्शन की वापसी से ठीक पहले निम्नलिखित कोड जोड़ें: 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; } }
कटहल

अभी भी Wordpress 5.1.1 के साथ शानदार अप्रैल 2019 काम करता है। मैं इसे upscale छवियों को बल देने के लिए उपयोग करता हूं जो मेरे कस्टम वांछित से छोटे हैं add_image_size। रीजनरेट थम्बनेल प्लगइन के साथ।
माउंटएक्सज़

यह कैसे काम करते add_image_sizeहैं?
गिदमिनस

0

सबसे आसान तरीका 640x298 के साथ एक छवि-आकार जोड़ना होगा, और इसे आकार देने के लिए सीएसएस का उपयोग करना होगा। जैसा कि यह सिर्फ एक मामूली पैमाने पर है, ब्राउज़र स्केलिंग काफी ठीक काम करना चाहिए।

दुर्भाग्य से, मुझे पता है कि सभी प्लगइन्स छवि को अपसंस्कृति प्रदान नहीं करते हैं, केवल छोटे छवि आकारों को उत्पन्न करते हैं, इसलिए यदि आप अपने सर्वर पर 688x320 रखना चाहते हैं, तो आपको मौजूदा प्लगइन्स में से एक को संपादित करना होगा।

यदि आपके पास इमेजिक स्थापित है, तो आप इस कोड का उपयोग करके थंबनेल के एक बड़े संस्करण को बनाते हुए, लाइन 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 );

और उससे छोटे थंबनेल उत्पन्न करें (कद काटकर)। अपने इमेजिक कोड में अलग-अलग Videoplatforms के लिए अलग-अलग छवियां बनाना सुनिश्चित करें!


मुझे लगता है कि मैं अभी सीएसएस फिक्स के साथ जाऊंगा, यह मेरी स्थिति पर जाने का सबसे आसान / सबसे तेज़ तरीका है। मैंने WP कोर फ़ाइलों की भी जाँच की और ऐसा लगता है कि आकार देने वाले फ़ंक्शन मिनट () का उपयोग करते हैं; मिनट की चौड़ाई / ऊँचाई निर्धारित करने के लिए और इसे संशोधित करने के लिए कोई हुक नहीं हैं, इसलिए यह अपलोड पर मेरी छवियों को नष्ट नहीं करेगा।
evaqas

एक हुक है जिसे आप "image_resize_dimensions" कह सकते हैं, जो आपको मिनट () के बिना फ़ंक्शन को फिर से लिखने में सक्षम करेगा।
लेवी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.