J'utilise image_style_url pour obtenir une vignette d'une image que j'ai ajoutée via l'interface administrateur.
// $foo->field_picture['und'][0]['uri'] has value public://foo.jpg
image_style_url('foo-thumb', $foo->field_picture['und'][0]['uri']);
L'API indique que l'image sera créée lorsque l'URL sera demandée. Cependant, lorsque vous visitez la page, l'image ne s'affiche pas (404). L'URL renvoyée par la fonction semble être bien formée, mais le fichier n'a pas été créé.
Le dossier "foo-thumb" se trouve dans le dossier de données public et les autorisations de fichier doivent être OK. J'ai essayé de vider le cache d'image (drupal image-flush foo-thumb) mais toujours aucun résultat.
Des idées?
De: https://drupal.org/drupal-7.20-release-notes
De plus, tout code qui génère par programme un lien vers un dérivé d'image sans utiliser la fonction API image_style_url () standard ne fonctionnera plus correctement si l'image n'existe pas déjà dans le système de fichiers, car le jeton nécessaire ne sera pas présent dans le URL.
Au lieu de cela, vous pouvez faire quelque chose comme ça;
$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);
Une erreur courante est que les URI ne sont pas correctement formatés. Vérifiez que votre paramètre URI est préfixé par public://
.
$imageUrl = image_style_url('style_name', 'myimage.jpg');
$imageUrl = image_style_url('style_name', $node->field_x[$node->language][0]['filename']);
Cela génère une URL vers l'image stylisée (avec un jeton d'image), mais ne génère pas une image stylisée lorsqu'elle n'a pas été précédemment générée.
$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']);
Cela génère une URL stylisée, comme ci-dessus, et génère une image stylisée s'il n'en existe pas.
Le chemin du système de fichiers public était incorrect.
$fid = file_load($field_yuorfield_fid);
$image_uri = image_style_url('yuor_style', $fid->uri);
fopen($image_uri, 'r');
ici, vous pouvez utiliser l'URL pour créer du HTML
Une autre option consiste à utiliser la fonction thème.
$img = theme('image_style', array('style_name' => 'your_image_style_machine_name', 'path' => $node->field_image['und'][0]['uri']));
Plutôt que de renvoyer l'URL, il renverra le code HTML de l'img.
Assurez-vous que vous avez foo-thumb
style, vous pouvez vérifier à admin/config/media/image-styles
.
Les premiers paramètres de image_style_url est un nom de style , pas un dossier nom.
Si vous recevez un 404 lorsque vous essayez d'afficher l'image, il est possible que le nom du style d'image ne soit pas correct. Dans mon cas, le nom de style affiché dans Styles d'image n'était pas le nom de machine du nom de style. Lorsque vous survolez le style, l'URL affiche le nom de la machine du nom du style. Modifiez-le par le nom de la machine ou supprimez le nom actuel et recréez-le avec le nom requis.