image_style_url चित्र नहीं बनाता है [बंद]


11

मैं व्यवस्थापक इंटरफ़ेस के माध्यम से जोड़े गए चित्र का एक थंबनेल प्राप्त करने के लिए image_style_url का उपयोग कर रहा हूं।

// $foo->field_picture['und'][0]['uri'] has value public://foo.jpg
image_style_url('foo-thumb', $foo->field_picture['und'][0]['uri']);

एपीआई का कहना है कि जब यूआरएल अनुरोध किया जाएगा तो छवि बनाई जाएगी। हालाँकि, पृष्ठ पर जाते समय छवि प्रदर्शित नहीं होती है (404)। फ़ंक्शन से लौटाया गया URL अच्छी तरह से बनता हुआ प्रतीत होता है, लेकिन फ़ाइल नहीं बनाई गई है।

'फू-थंब' फ़ोल्डर सार्वजनिक डेटा फ़ोल्डर में है और फ़ाइल अनुमतियां ठीक होनी चाहिए। मैं छवि कैश फ्लश करने की कोशिश की (drupal छवि-फ्लश फू-अंगूठे) लेकिन फिर भी कोई परिणाम नहीं।

कोई विचार?

जवाबों:


22

प्रेषक: https://drupal.org/drupal-7.20-release-notes

इसके अलावा, कोई भी कोड जो मानक छवि_स्टाइल_url () का उपयोग किए बिना प्रोग्राम को व्युत्पन्न करने के लिए एक छवि बनाता है, एपीआई फ़ंक्शन अब सही ढंग से काम नहीं करेगा यदि छवि पहले से ही फाइल सिस्टम में मौजूद नहीं है, क्योंकि आवश्यक टोकन मौजूद नहीं होगा। यूआरएल।

इसके बजाय आप ऐसा कुछ कर सकते हैं;

$image_uri      = $node->field_image[LANGUAGE_NONE][0]['uri']; // or any public://my_image
$style          = 'my_style';
$derivative_uri = image_style_url ($style, $image_uri);
$success        = file_exists($derivative_uri) || image_style_create_derivative(image_style_load($style), $image_uri, $derivative_uri);

$new_image_url  = file_create_url($derivative_uri);

2
अंत में अगर वहाँ नहीं हो सकता है? अर्थात: अगर ($ सफलता) {$ new_image_url = file_create_url ($ व्युत्पन्न); }
स्टेफगोस्सेलिन

3
के लिए एक छोटी सी अद्यतन चर सरणी होना चाहिएimage_style_create_derivative$style$style = image_style_load('my_style');
विक्टर Lazov

मैं पारित करने के लिए इस सवाल का जवाब संपादित कर लिया है $style, हालांकि image_style_load()करने के लिए पारित करने से पहले image_style_create_derivative()के अनुसार डॉक्स
फेलिक्स ईव

इसमें सब कुछ काम किया सिवाय उस file_create_url ($ derivative_uri) के; मेरे लिए काम नहीं किया। क्या काम किया गया था कि (अंतिम पंक्ति पर) image_style_url ($ शैली, $ image_uri) के साथ प्रतिस्थापित कर रहा था;
मार्क

File_create_url की यह विधि छवि शैली को लागू नहीं करती है। मुझे एक समाधान मिला जो एक और छवि शैली को लागू करता है। बहुत अजीब।
हेनरी

7

एक सामान्य गलती यह है कि यूआरआई को ठीक से स्वरूपित नहीं किया जाता है। जांचें कि आपका URI पैरामीटर पहले से उपसर्ग है public://

बुरा अभ्यास

$imageUrl = image_style_url('style_name', 'myimage.jpg');
$imageUrl = image_style_url('style_name', $node->field_x[$node->language][0]['filename']);

यह URL को स्टाइल की गई छवि (छवि टोकन के साथ) के लिए आउटपुट करता है, लेकिन स्टाइल वाली छवि को उत्पन्न नहीं करता है जब यह पहले उत्पन्न नहीं हुआ है।


अच्छा अभ्यास

$imageUrl = image_style_url('style_name', file_build_uri('myimage.jpg')); // changes to 'public://myimage.jpg'
$imageUrl = image_style_url('style_name', $node->field_x[$node->language][0]['uri']);

यह ऊपर की तरह एक स्टाइल किए गए URL को आउटपुट करता है, और यदि कोई मौजूद नहीं है तो स्टाइल की गई छवि बनाता है।



1

एक अन्य विकल्प थीम फ़ंक्शन का उपयोग करना है।

$img = theme('image_style', array('style_name' => 'your_image_style_machine_name', 'path' => $node->field_image['und'][0]['uri']));

URL को वापस करने के बजाय यह img के लिए html लौटाएगा।


1
$fid = file_load($field_yuorfield_fid);          
$image_uri = image_style_url('yuor_style', $fid->uri);
fopen($image_uri, 'r');

यहाँ html बनाने के लिए url का उपयोग कर सकते हैं


0

सुनिश्चित करें कि आपके पास foo-thumbशैली है, आप देख सकते हैं admin/config/media/image-styles

Image_style_url का पहला पैरामीटर एक शैली का नाम है , फ़ोल्डर का नाम नहीं।


शैली मौजूद है, फ़ोल्डर नाम मेरे मामले में शैली नाम के समान है।
बार्ट

यदि आपको त्रुटि 404 मिली है, तो इसका मतलब है कि मेनू मौजूद नहीं है। मुझे लगता है कि आपकी सभी छवि शैलियों में यह समस्या है। क्या आप ड्रुपल संस्करण और जानकारी के बारे में अधिक बता सकते हैं: - आप किस वेबसर्वर का उपयोग कर रहे हैं? - क्या क्लीन url सेटिंग सही है?
संग ले थान

मुझे नहीं पता कि मेनू मौजूद नहीं है, लेकिन फ़ाइल निश्चित रूप से नहीं है। लौटाया गया URL सही के बारे में लगता है, लेकिन अगर मैं सर्वर पर अपने फ़ोल्डर की जांच करता हूं तो छवि वहां नहीं है। Drupal ('foo-thumb') द्वारा बनाया गया फ़ोल्डर हालांकि है। स्वच्छ URL के साथ Apache 2.2 चलाना और सभी ठीक काम कर रहे हैं।
बार्ट

मैं देख सकता हूं कि आपकी छवि उत्पन्न लिंक नहीं मिली। क्या आप लाइन की जाँच करने के लिए .htaccess फ़ाइल की जाँच ErrorDocument 404 /index.phpकर सकते हैं, क्या आप अपने डोमेन के ऊपर Drupal चला रहे हैं? अन्य कोशिश में इमेजमैजिक टूलकिट इंस्टॉल किया गया है लेकिन मुझे लगता है कि आपकी समस्या isp समस्या नहीं है।
सांग ले थान

0

यदि आप छवि को देखने का प्रयास करते समय 404 प्राप्त करते हैं, तो संभावना है कि छवि शैली का नाम सही नहीं है। मेरे मामले में, स्टाइल स्टाइल्स में जो स्टाइल नेम दिखाया गया वह स्टाइल नाम का मशीन नाम नहीं था। जब शैली पर होवर करते हैं तो url शैली के नाम का मशीन नाम प्रदर्शित करेगा। या तो इसे मशीन के नाम में बदल दें या करंट को हटा दें और जरूरत के नाम से दोबारा बनाएं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.