微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

非公共路径上的 Symfony 控制器中的 liip Imagine_filter

如何解决非公共路径上的 Symfony 控制器中的 liip Imagine_filter

有没有什么方法可以在不将图像源复制到公共路径的情况下使用 liip Imagine_filter? 我看不到如何设置解析器/加载器以从非公共文件位置加载图像并同样存储它们。

我定义了一个水印过滤器,其中水印图像放置在公共路径之外 - 可以正常工作。但仅适用于放置在公共路径中的图像。

我在 Symfony 5 和 "liip/imagine-bundle": "^2.6"

解决方法

我和你有同样的问题,我找到了这个解决方案,当然是一个小小的解决方法,但效果很好。 所以我将文件从 $remoteWatermak 复制到服务器中。如果设置了 $localWatermark,我会检查文件是否存在。

$arrContextOptions=array(
    "ssl"=>array(
        "verify_peer"=>false,"verify_peer_name"=>false,),);

if($localWatermark){

    $filesystem = new Filesystem();
    if(!$filesystem->exists($localWatermark)){
        $contents = file_get_contents($remoteWatermark,false,stream_context_create($arrContextOptions)); // get file

        file_put_contents($localWatermark,$contents);

    }

}else{
    $contents = file_get_contents($remoteWatermark,stream_context_create($arrContextOptions)); // get file

    $file = "uploads/watermarks/" . uniqid();
    file_put_contents($file,$contents);

    $localWatermark = $file;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。