php - 如何在 laravel 5.8 中上传图片时添加水印
问题描述
当用户在系统上上传图像时,我想添加水印。我当前的代码工作正常,但我需要它在上传时工作。我要在我的代码中添加什么?
我的 WatermarkController 文件
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Image;
class WaterMarkController extends Controller
{
public function imageWatermark()
{
$img = Image::make(public_path('images/background.png'));
/* insert watermark at bottom-right corner with 10px offset */
$img->insert(public_path('images/watermark.png'), 'bottom-right', 10, 10);
$img->save(public_path('images/background.png'));
$img->encode('png');
$type = 'png';
$new_image = 'data:image/' . $type . ';base64,' . base64_encode($img);
return view('show_watermark', compact('new_image'));
}
public function textWatermark()
{
$img = Image::make(public_path('images/background.jpg'));
$img->text('MyNotePaper', 710, 370, function ($font) {
$font->file(public_path('font/amandasignature.ttf'));
$font->size(30);
$font->color('#f4d442');
$font->align('center');
$font->valign('top');
$font->angle(0);
});
$img->save(public_path('images/new-image.png'));
$img->encode('png');
$type = 'png';
$new_image = 'data:image/' . $type . ';base64,' . base64_encode($img);
return view('show_watermark', compact('new_image'));
}
}
web.php 文件
Route::get('watermark-image', 'WaterMarkController@imageWatermark');
Route::get('watermark-text', 'WaterMarkController@textWatermark');
就像我说的那样,我当前的代码工作正常,但是当用户将图像上传到系统时,我需要它动态工作,使用此代码,您必须将 watermark.png 和 backgroud.jpg 配置到同一目录然后访问路由水印图像。请帮助我,我对 Laravel 很陌生。谢谢
解决方案
您可以使用$request->file('YOUR_FIELD_NAME')
获取上传的图像并使用存储助手访问您上传到存储中的水印
推荐阅读
- scala - 如何按顺序而不是同时运行加特林场景?
- r - R:如何解释我的派对情节决策树?
- regex - 用于匹配来自防火墙系统日志的项目的正则表达式
- javascript - 有没有办法为特定客户存储未传递的消息?
- matplotlib - 'numpy.ndarray' 对象没有属性 'plot' matplotlib 错误
- python - 如何在pyspark中遍历未知数据框的列的行
- jenkins - Jenkins“未知命令”错误的问题
- unity3d - 如何在统一 3D 中放置兴趣点
- swift - 'NSPersistentCloudKitContainer' 仅在 iOS 13.0 或更高版本中可用
- octave - 在多维矩阵上使用逻辑索引替换八度值