Symfony2:Amazon S3检索图像并使用Imagine进行修改

时间:2014-01-12 11:05:30

标签: php symfony amazon-web-services amazon-s3 php-imagine

我正在使用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不存在。

0 个答案:

没有答案