我正在使用amazon s3存储我的图像。现在我有3个不同的文件夹 - 临时一个不接受图片,一个接受,一个水印。
当照片被接受时,它会被复制到已接受和加水印的文件夹并从临时文件中删除。
问题在于水印文件夹,因为我需要添加水印。在进行中的工作中,我嘲笑了添加这样的水印的方法:
protected function addWatermark($product)
{
$filterName = 'watermark';
$this->imagineFilterManager->getFilter($filterName)
->apply($this->imagine->open($product->getFilePath()))
->save($path, array('format' => "png"));
}
非常好。但问题是 - mock正在处理上传文件,而FilePath是映像的临时文件路径。
现在我需要从亚马逊s3中检索图像,将其传递给imagFilterManager并保存回亚马逊s3位置。问题在于检索照片。
我试过这样的: 读方法:
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上保存图像文件:
->save($path, array('format' => "png"));
但是无法仅使用路径打开文件:
->apply($this->imagine->open($file->getFilePath()))
抛出异常
文件watermarked / asd_asd.png不存在。