أنا أستخدم 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']);
ينص API على أنه سيتم إنشاء الصورة عند طلب URL. ومع ذلك ، عند زيارة الصفحة ، لا يتم عرض الصورة (404). يبدو أن عنوان URL الذي تم إرجاعه من الوظيفة جيد التكوين ، ولكن لم يتم إنشاء الملف.
المجلد "foo-thumb" موجود في مجلد البيانات العامة ويجب أن تكون أذونات الملف على ما يرام. لقد حاولت مسح ذاكرة التخزين المؤقت للصور (دروبال فوش- فلوش- إبهام) ولكن لا توجد نتائج.
أيه أفكار؟
من: https://drupal.org/drupal-7.20-release-notes
بالإضافة إلى ذلك ، لن تعمل أي تعليمات برمجية تنشئ ارتباطًا برمجيًا لمشتق صورة بدون استخدام وظيفة API image_style_url () القياسية بشكل صحيح إذا لم تكن الصورة موجودة بالفعل في نظام الملفات ، نظرًا لأن الرمز المميز لن يكون موجودًا في 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);
أحد الأخطاء الشائعة هو أن عناوين URI غير منسقة بشكل صحيح. تحقق من أن معلمة 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 ذي نمط ، مثل المذكور أعلاه ، وإنشاء صورة ذات نمط إذا لم يكن هناك أي منها.
كان مسار نظام الملفات العام غير صحيح.
$fid = file_load($field_yuorfield_fid);
$image_uri = image_style_url('yuor_style', $fid->uri);
fopen($image_uri, 'r');
هنا يمكن استخدام رابط لإنشاء أتش تي أم أل
خيار آخر هو استخدام وظيفة السمة.
$img = theme('image_style', array('style_name' => 'your_image_style_machine_name', 'path' => $node->field_image['und'][0]['uri']));
بدلاً من إرجاع عنوان URL ، سيتم إرجاع html للصورة.
تأكد من أن لديك foo-thumb
النمط ، يمكنك التحقق في admin/config/media/image-styles
.
المعلمات الأولى image_style_url اسم نمط نمط ، وليس مجلد الاسم.
إذا تلقيت 404 عند محاولة عرض الصورة ، فمن المحتمل أن اسم نمط الصورة غير صحيح. في حالتي ، لم يكن اسم النمط الذي ظهر في Image Styles هو اسم الجهاز لاسم النمط. عند التمرير فوق النمط ، سيعرض عنوان URL اسم الجهاز لاسم النمط. إما تغييره إلى اسم الجهاز أو حذف التيار وإعادة إنشائه بالاسم المطلوب.