Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2:AmazonS3使用Imagine检索图像和mofidy_Php_Symfony_Amazon Web Services_Amazon S3_Php Imagine - Fatal编程技术网

Php Symfony2:AmazonS3使用Imagine检索图像和mofidy

Php Symfony2:AmazonS3使用Imagine检索图像和mofidy,php,symfony,amazon-web-services,amazon-s3,php-imagine,Php,Symfony,Amazon Web Services,Amazon S3,Php Imagine,我正在使用AmazonS3来存储我的图像。现在我有3个不同的文件夹——临时文件夹,一个用于未接受的图片,一个用于已接受的图片,另一个用于带水印的图片 当照片被接受时,它会被复制到已接受和带水印的文件夹中,并从临时文件夹中删除 问题在于带水印的文件夹,因为我需要添加水印。在进行中的工作期间,我模拟了添加水印的方法,如下所示: protected function addWatermark($product) { $filterName = 'watermark'; $th

我正在使用AmazonS3来存储我的图像。现在我有3个不同的文件夹——临时文件夹,一个用于未接受的图片,一个用于已接受的图片,另一个用于带水印的图片

当照片被接受时,它会被复制到已接受和带水印的文件夹中,并从临时文件夹中删除

问题在于带水印的文件夹,因为我需要添加水印。在进行中的工作期间,我模拟了添加水印的方法,如下所示:

    protected function addWatermark($product)
{
    $filterName = 'watermark';

    $this->imagineFilterManager->getFilter($filterName)
            ->apply($this->imagine->open($product->getFilePath()))
            ->save($path, array('format' => "png"));
}
而且很好。但问题是-mock正在处理上传的文件,而FilePath是指向映像的临时文件路径

现在我需要从AmazonS3中检索图像,将其传递给imagineFilterManager并保存回AmazonS3位置。问题在于检索照片

我试着这样做: 读取方法:

    public function read($path)
{
    return $this->fileSystem->read($path);
}

    protected function addWatermark($product)
{
    var_dump('addWatermark');

    $filterName = 'watermark';
    $path = $this->getShopPicturePath($product);
    $file = $this->staticContentAdapter->read($path);
    $file = imagecreatefromstring($file);

    $this->imagineFilterManager->getFilter($filterName)
            ->apply($this->imagine->open($file))
            ->save($path, array('format' => "png"));
    var_dump('filtered');exit;
}
但在此之后,$this-imagine-open()返回

文件资源id#141不存在

对我来说奇怪的是,我可以只使用以下路径在s3上保存图像文件:

但无法仅使用路径打开文件:

它抛出异常

文件水印/asd_asd.png不存在


您正在尝试直接从s3打开文件吗?或者在试图打开该文件之前,您正在将其复制到
/tmp
?我不知道如何将其复制到/tmp。我试图直接从s3Ok打开它,我成功地做了这样的事情:$image=newimagine()$image=$this->imagine->open($this)gaufrette://fs/shop/asd_asd.png'); $这个->图像过滤器管理器->获取过滤器($filterName)->应用($image)->保存($path。“\u temp”,数组('format'=>“png”);它正确应用,但当我尝试保存时,我有:RuntimeException:json_encode():类型不受支持,编码为null
            ->save($path, array('format' => "png"));
            ->apply($this->imagine->open($file->getFilePath()))