我正在使用LiipImagineBundle从上传的图像创建一个过滤的图像。包的当前配置是:
liip_imagine:
resolvers:
default:
web_path: ~
filter_sets:
cache: ~
my_filter:
filters:
relative_resize: { heighten: 66 }
我的目标是创建一个目录结构,如:
web_root\{subdirectory}\{type}_{filename_md5_hash}.jpeg
对于小图像,类型是s
,对于原始大小,类型是o
。子目录是从上传日期创建的。
问题是LiipImagineBundle将过滤后的图像存储在web_root\my_filter\{subdirecory}\{type}_{filename_md5_hash}.jpeg
中。
如何省略url的my_filter
部分?我需要每个上传的图像和它的过滤,以存储在同一个最终文件夹。
我不是专家,我做了很多研究,但都没有用。该配置允许为整个过滤器或单个筛选器更改缓存的web路径,但过滤器名称始终位于最终的url中。
非常感谢你的帮助。
发布于 2016-06-02 17:01:26
我使用LiipImagineBundle提供的服务来更好地控制过滤过程。换句话说,我没有在控制器中使用liip_imagine.controller
服务,而是使用了“基础”服务:liip_imagine.data.manager
、liip_imagine.filter.manager
和liip_imagine.cache.manager
。
在我的特殊情况下,我还省略了liip_imagine.cache.manager
的使用,因为我最终决定将过滤后的图像存储在与原始图像相同的目录中。因此,缓存不涉及(既不涉及配置,也不涉及直接结构)。所以现在所有的东西都存储在web\images
中
$small_path= 's_'. $image_file->getClientOriginalName();
$filter = 'my_filter';
$config= array( 'widen' => 960) ;
$path = $image->getWebPath();
$container = $this->container;
$dataManager = $container->get('liip_imagine.data.manager');
$filterManager = $container->get('liip_imagine.filter.manager');
$binary = $dataManager->find($filter, $path);
$filteredBinary = $filterManager->applyFilter( $binary, $filter, array(
'filters' => array(
'relative_resize' => $config
)
));
$small_path = str_replace("subdirectory/","subdirectory/s_",'subdirectory/'.$small_path );
$s = $sBinary->getContent();
$f = fopen($smallPath, 'w');
fwrite($f, $s );
fclose($f);
当然,这会使配置发生变化:
my_filter:
filters:
relative_resize: []
实际上,我现在可以动态地使用relative_resize
内置过滤器的任何配置。谢谢您抽时间见我。我希望我能收到关于这一方法的反馈。
发布于 2016-05-31 14:55:17
您想要的东西要求您创建一个自定义CacheResolver
(实现Liip\ImagineBundle\Imagine\Cache\Resolver\ResolverInterface
)。起初,这不是一个容易的任务,但这是拥有这样一个特定用例的唯一方法。
然后,将您的自定义CacheResolver
注册为标记liip_imagine.cache.resolver
的服务,为您的标记提供一个带有您选择的名称的resolver
属性(例如<tag name="liip_imagine.cache.resolver" resolver="same_folder" />
),并在您的config.yml中使用这个解析器。
liip_imagine:
filter_sets:
FILTER_NAME:
cache: same_folder
https://stackoverflow.com/questions/37548048
复制相似问题