简体   繁体   English

Laravel 上的水印

[英]watermark on Laravel

I am wondering if you can help me again.我想知道你是否可以再次帮助我。 I am having trouble with creating/putting a watermark on the profile images.我在个人资料图像上创建/放置水印时遇到问题。

Till now I have:到目前为止,我有:

WaterMarkController.php: WaterMarkController.php:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Image;

class WaterMarkController extends Controller
{
    public function imageWatermark()
    {
        Image::make(public_path('storage/images/background.jpg'));

        /* insert watermark at bottom-right corner with 10px offset */
        $img->insert(public_path('storage/images/watermark.png'), 'bottom-right', 10, 10);
        $img->encode('png');

        $img->save(public_path('storage/images/new-image.png'));

        $type = 'png';
        $new_image = 'data:image/' . $type . ';base64,' . base64_encode($img);

        return view('show_watermark', compact('new_image'));
    }

    public function textWatermark()
    {
        Image::make(public_path('storage/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('storage/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'));
    }

}

The file - show_watermark.blade.php:文件 - show_watermark.blade.php:

<!doctype html>
<html lang="en">
<head>
    <title>Laravel Add Watermark on Images</title>
</head>
<body style="margin-top: 40px; text-align: center;">

<h1>Laravel Add Watermark</h1>

<img src="{{$new_image}}" alt="Watermark">

</body>
</html>

and the routes:和路线:

Route::get('watermark-image', 'WaterMarkController@imageWatermark');
Route::get('watermark-text', 'WaterMarkController@textWatermark');

what else should be done?还应该做什么? Because I am having the error:因为我遇到了错误:

Intervention\Image\Exception\NotReadableException Image source not readable Intervention\Image\Exception\NotReadableException 图像源不可读

How do I make it readable?我如何使它可读? And nowhere in the code, I haven't shown the path to the image that I want for watermark (I have created my own logo for the project and I want to use it), how do I show the path to it?在代码中没有任何地方,我没有显示我想要的水印图像的路径(我已经为项目创建了自己的徽标并且我想使用它),我如何显示它的路径? And do I put it in the same place where the profile pictures are or, in another folder?我是将它放在个人资料图片所在的同一位置还是放在另一个文件夹中?

Thanks in Advance!!!提前致谢!!!

I dont know what do you happen, maybe if your use Linux you need to add permissions to the public folder maybe, because on windows I create a project with your code and work perfectly, sure that you have the files on correct folders我不知道你发生了什么,也许如果你使用 Linux 你可能需要向公共文件夹添加权限,因为在 windows 我用你的代码创建了一个项目并且工作正常,确保你有正确文件夹中的文件

public function imageWatermark()
    {
        $img = Image::make(public_path('images/background.jpg'));

        /* insert watermark at bottom-right corner with 10px offset */
        $img->insert(public_path('images/logo-dateado-blanco.png'), 'bottom-right', 10, 10);
        $img->encode('png');

        $img->save(public_path('images/new-image.png'));

        $type = 'png';
        $new_image = 'data:image/' . $type . ';base64,' . base64_encode($img);

        return view('show_watermark', compact('new_image'));
    }

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM