JGr*_*non 6 image symfony symfony-2.1 liipimaginebundle
我正在使用liipImagineBundle并尝试将过滤器直接应用到控制器中.
在文档中,我找到了两个部分,其中解释了如何使用控制器中的liipImagineBundle.这一个https://github.com/liip/LiipImagineBundle#using-the-controller-as-a-service
public function indexAction()
{
// RedirectResponse object
$imagemanagerResponse = $this->container
->get('liip_imagine.controller')
->filterAction(
$this->getRequest(),
'uploads/foo.jpg', // original image you want to apply a filter to
'my_thumb' // filter defined in config.yml
);
// string to put directly in the "src" of the tag <img>
$srcPath = $imagemanagerResponse->headers->get('location');
// ..
}
Run Code Online (Sandbox Code Playgroud)
并https://github.com/liip/LiipImagineBundle/blob/master/Resources/doc/filters.md#dynamic-filters
public function filterAction(Request $request, $path, $filter)
{
$targetPath = $this->cacheManager->resolve($request, $path, $filter);
if ($targetPath instanceof Response) {
return $targetPath;
}
$image = $this->dataManager->find($filter, $path);
$filterConfig = $this->filterManager->getFilterConfiguration();
$config = $filterConfig->get($filter);
$config['filters']['thumbnail']['size'] = array(300, 100);
$filterConfig->set($filter, $config);
$response = $this->filterManager->get($request, $filter, $image, $path);
if ($targetPath) {
$response = $this->cacheManager->store($response, $targetPath, $filter);
}
return $response;
}
Run Code Online (Sandbox Code Playgroud)
我按照"使用控制器作为服务"中的说明进行了测试并且它有效,我遇到的问题是我不知道如何访问过滤器设置来修改它.
liip_imagine:
driver: gd
web_root: %kernel.root_dir%/../web
data_root: %kernel.root_dir%/../web
cache_mkdir_mode: 0777
cache_prefix: /media/cache
cache: web_path
cache_clearer: true
data_loader: filesystem
controller_action: liip_imagine.controller:filterAction
formats: []
filter_sets:
my_thumb:
filters:
crop: { start: [0, 0], size: [200, 150] }
my_paste:
quality: 90
filters:
paste: { start: [30, 60], image: ../web/uploads/images/firma.jpg }
Run Code Online (Sandbox Code Playgroud)
第二,真的,我不明白他说"使用自定义数据加载器......".
在示例中,他只修改了ImagineController类(Liip\ImagineBundle\Controller)中的方法filteraction().我想知道如何动态修改该方法?例如,来自我的控制器indexAction().
我也读过这篇文章/sf/ask/1131670361/其中@NSCoder说"你可以使用内置的过滤器并修改他们的配置." 但我不明白.
我一直在寻找好几天,但我还没有找到一个从中开始的例子.
寻找更多我发现另一个LiipImagineBundle主题(上传后使用LiipImagineBundle来调整大小?),这帮助我做了我想做的事情.
这里我留下用于动态应用过滤器的代码
public function indexAction()
{
$container = $this->container;
# The controller service
$imagemanagerResponse = $container->get('liip_imagine.controller');
# The filter configuration service
$filterConfiguration = $container->get('liip_imagine.filter.configuration');
# Get the filter settings
$configuracion = $filterConfiguration->get('my_thumb');
# Update filter settings
$configuracion['filters']['crop']['size'] = array(50, 150);
$configuracion['filters']['crop']['start'] = array(10, 10);
$filterConfiguration->set('my_thumb', $configuracion);
# Apply the filter
$imagemanagerResponse->filterAction($this->getRequest(),'uploads/images/logo.jpg','my_thumb');
# Move the img from temp
$fileTemporal = new File('media/cache/my_thumb/uploads/images/logo.jpg');
$fileTemporal->move('uploads/images/', 'mini-logo.jpg');
####################################
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5989 次 |
| 最近记录: |