使用Laravel的store()存储使用imagecopy()创建的图像

时间:2019-01-04 11:35:17

标签: php laravel image gd

我有一个使用php的imagecopy()创建的图像,用于添加水印:

imagecopy($base, $stamp, imagesx($base) - $sx, imagesy($base) - $sy, 0, 0, imagesx($stamp), imagesy($stamp));

这是直接从php manual提起的,效果很好。它使用$ base创建图像,如果将标头设置为jpeg,则可以在浏览器中输出图像。

但是,下一步是使用Laravel存储它。我可以使用

手动完成
imagejpeg($base,$storagePath)

同样,这很好。但是,我真正想要的是获取我的$ base并以正确的方式存储它,例如

$base->store('mydirectory');

但这是不可能的,因为$ base并没有给我store()应该处理的东西。

1 个答案:

答案 0 :(得分:0)

好,我最终解决了这个问题,我需要使用输出缓冲获取图像数据,然后使用可以存储原始数据的Storage :: put。

因此请确保我正在使用存储空间:

use Illuminate\Support\Facades\Storage;

然后存储图像

// prepare a path
$filename = uniqid().'.jpeg';
$path = 'images/'.$filename;

// output buffering so you can load imagejpeg() created raw data as a variable
ob_start();
imagejpeg($base);
$image_contents = ob_get_clean();

// put it in storage using Laravel
Storage::put($path, $image_contents);