首页 > 解决方案 > 如何在 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 很陌生。谢谢

标签: phplaravellaravel-5

解决方案


您可以使用$request->file('YOUR_FIELD_NAME')获取上传的图像并使用存储助手访问您上传到存储中的水印


推荐阅读