web-dev-qa-db-ja.com

image_style_urlは画像を作成しません

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」フォルダーはパブリックデータフォルダー内にあり、ファイル権限はOKである必要があります。画像キャッシュをフラッシュしようとしましたが(drupal image-flush foo-thumb)、それでも結果はありません。

何か案は?

11
Bart

差出人: https://drupal.org/drupal-7.20-release-notes

さらに、標準のimage_style_url()API関数を使用せずにプログラムによって画像派生物へのリンクを生成するコードは、必要なトークンが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);
22
Matthieu Gadrat

よくある間違いの1つは、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が出力され、スタイル付き画像が存在しない場合は生成されます。

7
timofey.com

パブリックファイルシステムのパスが間違っていました。

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

ここではhtmlを作成するためにURLを使用できます

1
Basil

別のオプションは、theme関数を使用することです。

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

URLを返すのではなく、imgのHTMLを返します。

1
rparker

foo-thumbスタイルであることを確認してください。admin/config/media/image-stylesで確認できます。

image_style_url の最初のパラメーターはスタイル名であり、フォルダー名ではありません。

0
Sang Le Thanh

画像を表示しようとしたときに404を受け取った場合は、画像のスタイル名が正しくない可能性があります。私の場合、Image Stylesに表示されたスタイル名は、スタイル名のマシン名ではありませんでした。スタイルにカーソルを合わせると、URLにスタイル名のマシン名が表示されます。マシン名に変更するか、現在のものを削除して、必要な名前で再作成してください。

0
user28555