我有以下代码在最新的drupal(v7.59)上测试image_style_url()
<img src=“<?= file_create_url($fileuri); ?>” />
<img src=“<?= image_style_url(“medium”, $fileuri); ?>” />
file_create_url()可以正确地显示原始图像,而image_style_url()只能提供样式化图像的url,而不能在样式化图像文件夹中创建任何样式化图像。
public://和/tmp目录都是777权限设置,所以不会有权限问题。
有人能告诉我我的drupal出了什么问题吗?
发布于 2018-06-21 02:44:36
似乎你必须首先创建图像派生。通常情况下,当通过图像字段上传来上传图像时,这会自动发生。但自动派生创建可能会在文件字段上传时跳过,或者在使用根本不受Drupal管理的其他图像时跳过,或者在您已经上传图像之后添加图像样式时跳过。
看看image_style_create_derivative($style, $source, $destination)
吧。查看注释,以及$style
需要是image_style_load('MYSTYLE')
返回的数组。
基于图像样式创建新的图像派生。
唯一悬而未决的问题是如何在调用该函数之前首先检查派生函数是否已经存在。也许你可以先检查一下file_exists(image_style_path($style_name, $file_uri))
返回了什么。
发布于 2018-06-20 21:41:03
你的Drupal没什么问题。在有人访问使用该样式的列表之前,不会实际创建派生图像。
示例:创建新节点并在其上上传图像。原始图像在文件夹中。但是,如果您使用的是例如预告图像样式,并且如果您转到预告文件夹,则不会在那里创建图像,直到有人访问使用“预告”图像样式的页面。您可以很容易地在干净的Drupal上测试这一点。基本上,镜像是在HTTP请求中动态创建的。
https://stackoverflow.com/questions/50947548
复制相似问题