物理的にサイズ変更されたイメージファイルを実際に作成する関数はどれですか?

デフォルトでは、Drupal 7にはサムネイル、中、大の3種類の画像スタイルが同梱されています。

screenshot

たとえば、画像フィールド(「画像」と呼ばれるフィールド名と仮定します)を使用して画像ファイル(
‘abc.jpg’)をアップロードします。 “Article”ノードを作成している間、画像ファイルはアップロードされて
“sites/default/files/field/image/abc.jpg”に保存され、このアップロードされたファイルのレコードは
“file_managed “テーブル。
その時までに、 “abc.jpg”の中規模および大規模スタイルのバージョンはまだ作成されていません。

「Article」ノードのティーザーは、メディアスタイルのイメージフィールドを表示します。

screenshot

次に、そのノードのティーザービューモードに初めて移動します。 “abc.jpg”のメディア版が生成され、
“sites/default/files/styles/medium/public/field/image/abc.jpg”に置かれます。

デフォルトのビューは、「大きな」スタイルを使用してイメージを表示するように設定されています。

screenshot

デフォルトビューを使用してノードを表示し、 “abc.jpg”の大きなバージョンが
“sites/default/files/styles/large/public/field/image/abc.jpg”に作成されます。

基本的に、画像のアップロードは非常にスマートです。画像がアップロードされると、Drupalはその画像の異なるスタイルのバージョンをすべて作成することはありません。
Drupalは、最初にその特定のイメージスタイルを使用してビューを参照するときにイメージのスタイルを作成します。

どのファンクション/フックがスタイル付きイメージのファイルを作成していますか?

ベストアンサー

スタイルに基づいたイメージURLを生成する関数は、 theme(
‘image_style’)
/theme_image_formatter/7 “rel =” nofollow
“>テーマ( ‘image_formatter’)を作成し、 image_field_formatter_view()hook_field_formatter_viewの実装です()では、フィールドフォーマッタで、そのフィールドを含むエンティティのビュー内のフィールドの内容を出力するフックです。

イメージは、そのURLにアクセスすると生成されます。私は次のコードを試した:

theme("image_formatter", array("image_style" => "thumbnail", "item" => array("uri" => "test.png", "title" => "Image title", "alt" => "Alternative text")));

私が得た出力は以下の通りです:

Alternative text

画像_メニュー( )を使用すると、次の行が見つかります。

  $directory_path = file_stream_wrapper_get_instance_by_scheme('public')->getDirectoryPath();
  $items[$directory_path . '/styles/%image_style'] = array(
    'title' => 'Generate image style', 
    'page callback' => 'image_style_deliver', 
    'page arguments' => array(count(explode('/', $directory_path)) + 1), 
    'access callback' => TRUE, 
    'type' => MENU_CALLBACK,
  );

image_style_deliver() is the function that
generates the image.

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です