我有一个使用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()应该处理的东西。
答案 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);