Php Symfony2:AmazonS3使用Imagine检索图像和mofidy
我正在使用AmazonS3来存储我的图像。现在我有3个不同的文件夹——临时文件夹,一个用于未接受的图片,一个用于已接受的图片,另一个用于带水印的图片 当照片被接受时,它会被复制到已接受和带水印的文件夹中,并从临时文件夹中删除 问题在于带水印的文件夹,因为我需要添加水印。在进行中的工作期间,我模拟了添加水印的方法,如下所示: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
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()))