image_style_url resim oluşturmuyor [kapalı]


11

Yönetici arayüzü üzerinden eklediğim bir resmin küçük resmini almak için image_style_url kullanıyorum .

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

API, URL istendiğinde resmin oluşturulacağını belirtir. Ancak, sayfayı ziyaret ederken görüntü gösterilmez (404). İşlevden döndürülen URL iyi biçimlendirilmiş gibi görünüyor, ancak dosya oluşturulmamış.

'Foo-thumb' klasörü genel veri klasöründedir ve dosya izinlerinin TAMAM olması gerekir. Görüntü önbelleğini (drupal image-flush foo-thumb) yıkamayı denedim ama yine de sonuç yok.

Herhangi bir fikir?

Yanıtlar:


22

Gönderen: https://drupal.org/drupal-7.20-release-notes

Ayrıca, standart image_style_url () API işlevini kullanmadan programlı olarak bir görüntü türevine bağlantı oluşturan kodlar, görüntü dosya sisteminde zaten mevcut değilse, artık gerekli belirteç bulunmayacağından URL.

Bunun yerine böyle bir şey yapabilirsiniz;

$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
Sonunda bir if olmamalı mıydı? örneğin: if ($ success) {$ new_image_url = file_create_url ($ derivative_uri); }
stefgosselin

3
İçin küçük güncelleme değişken dizi olmalıdırimage_style_create_derivative$style$style = image_style_load('my_style');
Victor Lazov

Ben geçmesine cevabını kaydetmiştiniz $styleolsa image_style_load()geçmeden önce image_style_create_derivative()başına docs .
Felix Eve

File_create_url ($ derivative_uri); benim için çalışmadı. Ne işe yaradı bunu (son satırda) image_style_url ($ style, $ image_uri);
Mark

Bu file_create_url yöntemi resim stilini uygulamaz. Başka bir görüntü stili uygulayan bir çözüm buldum. Gerçekten garip.
Henry

7

Yaygın bir hata, URI'lerin düzgün biçimlendirilmemesidir. URI parametrenizin önekiyle işaretlendiğini kontrol edin public://.

Kötü Uygulama

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

Bu, stil görüntüsüne (resim belirteci ile) bir URL verir, ancak daha önce oluşturulmadığında stilize bir görüntü oluşturmaz.


İyi pratik

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

Bu, yukarıdaki gibi tarz bir URL çıkarır ve mevcut değilse tarz bir görüntü oluşturur.



1

Başka bir seçenek tema işlevini kullanmaktır.

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

URL'yi döndürmek yerine, img için html'yi döndürür.


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

burada html oluşturmak için url kullanabilirsiniz


0

foo-thumbStiliniz olduğundan emin olun , kontrol edebilirsiniz admin/config/media/image-styles.

İlk parametreleri image_style_url bir olan stil adı değil, bir klasör adı.


Stil var, klasör adı benim durumumdaki stil adıyla aynı.
Bart

404 hatasını alırsanız, menü mevcut değildir. Bence tüm görüntü stillerinizde bu sorun var. Drupal sürümü ve bilgileri hakkında daha fazla bilgi verebilir misiniz: - Hangi web sunucusunu kullanıyorsunuz? - Temiz URL ayarı doğru mu?
Sang Le Thanh

Menünün mevcut olup olmadığını bilmiyorum, ama dosya kesinlikle yok. Döndürülen URL doğru görünüyor, ancak sunucudaki klasörümü kontrol edersem görüntü orada değil. Drupal ('foo-thumb') tarafından oluşturulan klasör orada. Apache 2.2'yi temiz URL'lerle çalıştırmak ve hepsi iyi çalışıyor gibi görünüyor.
Bart

Resim oluşturma bağlantınız bulunamadı. Satırı kontrol etmek için .htaccess dosyasını kontrol edebilir misiniz ErrorDocument 404 /index.php, alan adınızın üstünde Drupal çalıştırıyor musunuz? Diğer deneyin imagemagick araç yüklemek ama php görüntü render tarafından sorun değil sorun görüyorum.
Sang Le Thanh

0

Görüntüyü görüntülemeye çalışırken bir 404 alırsanız, görüntü stili adının doğru olmaması olasılığı vardır. Benim durumumda, Görüntü Stilleri'nde görünen stil adı, stil adının makine adı değildi. Stilin üzerine geldiğinde url, stil adının makine adını görüntüler. Ya makine adına değiştirin ya da akımı silin ve gerekli adla yeniden oluşturun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.