我正在尝试对基于LiipImagineBundle的图像应用滤镜。
以下是步骤:
通过添加以下行在composer文件中安装:
"liip/imagine-bundle": "1.0.*@dev"
通过添加以下行来配置config.yml文件:
liip_imagine:
resolvers:
default:
web_path:
web_root: %kernel.root_dir%/../web
cache_prefix: media/cache
filter_sets:
cache: ~
my_thumb:
quality: 75
filters:
thumbnail: { size: [120, 90], mode: outbound }
AppKernel.php中的包声明:
new Liip\ImagineBundle\LiipImagineBundle(),
通过添加树枝文件来测试捆绑包:
<img src="{{ asset('img/test.jpg') | imagine_filter('my_thumb') }}" />
但是,没有显示图像。生成的HTML文件包含:
<img src="http://localhost/tuto/web/app_dev.php/media/cache/my_thumb/img/test.jpg">
在浏览器的javascript控制台中,我发现了这个错误:
GET http://localhost/tuto/web/app_dev.php/media/cache/my_thumb/img/test.jpg 500 (Internal Server Error)
当我尝试打开链接(500内部服务器错误)时,symfony会抛出此错误:
Failed to create /home/amine/NetBeansProjects/tuto/app/../web/media/cache/my_thumb/img
500 Internal Server Error - IOException
我想我没有权限创建以下文件夹:/home/amine/NetBeansProjects/tuto/app/../web/media/cache/my_thumb/img
。在我看来,自从我在Ubuntu工作以来,这是可以预料的。
为避免此问题,我直接通过web
更改了文件夹sudo chmod 777 -R web
的权限,但问题仍然存在。
有什么想法吗?
答案 0 :(得分:0)
问题几乎解决了。我更改了config.yml:
liip_imagine:
resolvers:
default:
web_path:
web_root: %kernel.root_dir%/../web/imagine
# imagine is the folder where filtered images will be created!
cache_prefix: tuto/web/imagine/media/cache
# where tuto is the folder of my symfony application
filter_sets:
cache: ~
my_thumb:
quality: 75
filters:
thumbnail: { size: [120, 90], mode: outbound }
对于树枝部分,它已改为:
<img src="{{ 'img/test.jpg' | imagine_filter('my_thumb') }}" />
{# where img is the folder where I put all my images!#}
我的问题是:是否可以通过其他方式更改cache_prefix
的方式来更改参数tuto
的配置,以便配置可以在任何地方使用?
我问这个问题,因为我会在托管网站时避免出现问题!
...谢谢
答案 1 :(得分:0)
我认为它有效,但事实并非如此!它是从旧缓存加载图像。 忘记我的上一篇文章!
我认为捆绑中存在错误。我解释一下:
这是我的新配置包:
liip_imagine:
resolvers:
default:
web_path:
web_root: %kernel.root_dir%/../web/img
# %kernel.root_dir%/../web/img is the folder where filtered images will be created!
cache_prefix: media/cache
# media/cache the prefix of folder where the cached images will be created
filter_sets:
cache: ~
my_thumb:
quality: 75
filters:
thumbnail: { size: [120, 90], mode: outbound }
这是显示图像的树枝部分:
{# This way the filtered image will not be created!#}
<img src="{{ 'img/test.jpg' | imagine_filter('my_thumb') }}" />
{# That way, the filted images will be created. asset() must be used. #}
<img src="{{ asset('img/test.jpg' | imagine_filter('my_thumb')) }}" />
生成的图片链接不正确!实际上,获得的链接是:
http://localhost/media/cache/my_thumb/img/test.jpg
预期的正确链接是:
http://localhost/**tuto/web/img**/media/cache/my_thumb/img/test.jpg
tuto / web / img 中缺少部分。这是一个错误吗?
为了避免这个问题,我这样做了:
<img src="{{ asset('img/test.jpg' | imagine_filter('my_thumb'))|replace({'media':'tuto/web/img/media'}) }}" />
我猜:玩树枝不是一个好方法。我希望我们能找到解决这个错误的方法!
谢谢!