web-dev-qa-db-ja.com

theme_image_style()の使用

アップロードした画像のサムネイルをカスタムフォームで表示しようとしています。 Drupalのtmpディレクトリーにアップロードした後、フォーム配列内の画像を確認できますが、ここでは、画像を表示するために使用しようとしているものを示します。

_$url = file_create_url($form_object->uploads[$key]->uri);
$output .= '<div class="grid-3">'.theme_image_style(array('style' => 'form-preview', 'path' => $url)).'</div>';
_

_$url_がファイルリソースをポイントしている間は、サイズ変更された画像を一生表示できません。 imgタグを使用して、ソースとして_$url_を指定すると、画像は表示されますが、画像が非常に大きくなります。

theme_image_style()を呼び出すことはできませんか?これらは一時的なイメージであり、永続的なイメージではないためですか? theme_image()で表示させることができます。

6
Kevin

提案されているように、ドキュメントからtheme( 'image_style'、...)を使用してください-コードをこれに変更してください:

url = file_create_url($form_object->uploads[$key]->uri);
$output .= '<div class="grid-3">'.theme('image_style', array('style_name' => 'form-preview', 'path' => $url)).'</div>';
4
ipwa

いつものように、Drupalドキュメントに答えがあります。ファイルをファイルディレクトリに移動する必要があります。また、neverテーマ関数を直接呼び出す必要がありますが、代わりにラッパーtheme関数so:

theme_image_style(...) // Don't do this ever

theme('image_style', ...) // Do it like this and make themers happy.

APIドキュメントから:

$ variables以下を含む連想配列。

  • style_name:元の画像を変更するために使用されるスタイルの名前。
  • path:Drupal filesディレクトリに関連する画像ファイルのパス。この関数は、filesディレクトリ外の画像やリモートでホストされている画像では機能しません
  • alt:テキストベースのブラウザの代替テキスト。
  • タイトル:タイトルテキストは、一部の一般的なブラウザで画像にカーソルを合わせると表示されます。
  • attributes:imgタグに配置される属性の連想配列。
9
googletorp

attributesプロパティを使用してクラスを追加することをお勧めします

theme_image_style(array('style' => 'form-preview', 'path' => $url,'attributes'=>array('class'=>array('class1', 'class2')));
1
Yusef

私はsites/all/modulesからファイルを提供するためにこれを解決する必要があり、答えは モジュールディレクトリにある画像のテーマ画像スタイル で確認できます。

任意のファイルを処理し、ページリクエストの実行中に画像派生物を作成するカスタムテーマコールバックを生成するため、画像を作成する非同期リクエストを実行するのではなく、ファイルに直接リンクします。

より良い提案/回避策を歓迎します!

0
Alan D.