In Drupal 7 sind sämtliche Module zum Verwalten von Bildern und Dateien direkt integriert worden. Sogar die Oberfläche im Adminbereich ist fast identisch geblieben, so dass auch meine Drupal6 Anleitung (Drupal: Bilder in Beiträgen einfügen und verwalten bzgl. des ehemaligem ImageCache Module jetzt Image Styles, zum größten Teil noch genutzt werden kann. Nicht immer kann man allerdings das Drupal Node System nutzen um Bilder generieren zu lassen. Will man die Funktionen z.B. in einem eigenem Module nutzen, kann man nun direkt auf die Core Funktionen zugreifen und mit einfachem einzeiler Bilder manipuliert.
Dateiablage
Die originalen Bilder müssen zwangsweise im files Ordner der Drupal Installation liegen. Somit müssten externe Bilder, wenn man sie denn benötigt, erst dort abgelegt werden. Dies liegt an der Funktionsweise, wie die Bildervorschauen generiert werden. Mittels Regel in der htaccess Datei wird nachgesehen ob Vorschaubild bereits generiert wurden. Erst wenn dies nicht der Fall ist wird dazu ein PHP-Skript aufgerufen, ansonst wird immer direkt das Bild ausgeliefert.
Speicherorte mit Scheme
Neu in Drupal7 sind auch die Schemen bzw. Streamwrapper, die es bereits länger in PHP gibt. So kann bzw. muss man zum Teil auch public:// nutzen, um den Drupal files Speicherort zu finden. Früher nutzte man dazu die Funktion file_directory_path, was jetzt auch "noch" geht oder auch nicht mehr (Remove file_directory_path() | drupal.org, man sollte sich davon also verabschieden. Aus public://img.jpg wird also automatisch sites/all/files/img.jpg. Die Schemen sind also wesentlich einfacher nutzbar und viele Funktionen bestehen darauf. Mehr zu dem Schemen gibt hier: Drupal 7 File API Changes | RandyFay.com
Beispiel
Das folgende Beispiel erstellt eine Vorschau an Hand der Style-Definition von thumbnail mittels image_style bzw. theme_image_style. Wobei das Bild einmal als fertiger img-Tag ausgegeben wird und einmal die direkte HTTP-Adresse zum Bild (so sieht man dann wie die Bilder generiert werden). Zu guter letzt wird noch das Orignal Bild über die Image Funktion theme_image ausgegeben.
$var = array(
'style_name' => 'thumbnail', // the Image styles to use
'path' => 'public://img.jpg', // scheme feature: we dont need file_directory_path() in drupal7 to find e.g. sites/default/files
);
// returns a resized image in img tag based on the style_name
echo theme('image_style', $var);
// or use the function
echo theme_image_style($var);
// simple: this will return a http url to the image (eg http://localhost/sites/default/files/styles/thumbnail/img.jpg)
echo image_style_url('thumbnail', 'public://img.jpg');
// output the orignal image
echo theme('image', array('path' => 'public://img.jpg'));Ohne Style Vorlage
Das ganze läßt sich auch ohne Vorlage machen. Bilder und Drupal 7 | StarSt0rm Design. Habs persönlich allerdigns noch nicht getestet. Wobei man hier ein volles item benötigt wie es bei den Content Felder der Fall ist, also läuft es erstmal nur über das Node System, es sei denn man trickst etwas.
$var = array ( 'item' => $node->field_screenshots['und'][0], 'image_style' => '125x125' ); echo theme_image_formatter($var);