如何在 Laravel php 中保持图像和水印的纵横比
How to keep aspect ratio of Image and Watermark in Laravel php
我正在尝试将 800x100 像素的水印添加到任何分辨率大于 800x100 的图像,即 801x110、1200x1000、1300x200、1920x1080、4000x2010 等
我想将水印和图像的宽高比保持在 2:50。
即,如果图像的宽度为 1000px,则图像上的 watarmark 应占据 20px(1000/50)。
这是我的函数:
在helper.php
use Image;
//calling from Controller
public static function addwatermark ($name) {
$thumbnail = Image::make($name);
$imageWidth = $thumbnail->width();
$watermarkWidth = '800px';
$watermarkSource = 'public/img/watermark/watermark.png';
$thumbnail->insert($watermarkSource, 'bottom-left', 0, 0);
$thumbnail->save($name)->destroy();
}
在ImageController.php
$folder = 'public/folder/';
$large = 'myfile.jpeg';
Helper::addwatermark($folder.$large);
我认为这对你有用:
public static function addwatermark ($name) {
{
$thumbnail = Image::make($name);
$imageWidth = $thumbnail->width();
$watermarkSource = Image::make(public_path('img/watermark/watermark.png'));
$watermarkSize = round(20 * $imageWidth / 50);
$watermarkSource->resize($watermarkSize, null, function ($constraint) {
$constraint->aspectRatio();
});
$thumbnail->insert($watermarkSource, 'bottom-left', 0, 0);
$thumbnail->save($name)->destroy();
}
如果我明白你的意思:
水印的纵横比为8:1(水印的宽度是其高度的8倍)
并基于纵横比 2:50 或 1:25,图像的宽度是水印宽度的25倍。
例如:如果图像宽度为 1000px,则水印宽度应为 40px。
所以我们也将图像的宽度传递给 helper.php.
中的 addwatermark
函数
use Image;
public static function addwatermark ($name, $imageWidth) {
$watermarkWidth = $imageWidth / 25;
$watermarkHeight = $watermarkWidth / 8;
$watermarkSource = 'public/img/watermark/watermark.png';
$watermark= Image::make($name)->resize($watermarkWidth, $watermarkHeight)->insert($watermarkSource, 'bottom-left', 0, 0);
$watermark->save($name)->destroy();
}
如有错误,请告知,谢谢
我正在尝试将 800x100 像素的水印添加到任何分辨率大于 800x100 的图像,即 801x110、1200x1000、1300x200、1920x1080、4000x2010 等
我想将水印和图像的宽高比保持在 2:50。 即,如果图像的宽度为 1000px,则图像上的 watarmark 应占据 20px(1000/50)。
这是我的函数:
在helper.php
use Image;
//calling from Controller
public static function addwatermark ($name) {
$thumbnail = Image::make($name);
$imageWidth = $thumbnail->width();
$watermarkWidth = '800px';
$watermarkSource = 'public/img/watermark/watermark.png';
$thumbnail->insert($watermarkSource, 'bottom-left', 0, 0);
$thumbnail->save($name)->destroy();
}
在ImageController.php
$folder = 'public/folder/';
$large = 'myfile.jpeg';
Helper::addwatermark($folder.$large);
我认为这对你有用:
public static function addwatermark ($name) {
{
$thumbnail = Image::make($name);
$imageWidth = $thumbnail->width();
$watermarkSource = Image::make(public_path('img/watermark/watermark.png'));
$watermarkSize = round(20 * $imageWidth / 50);
$watermarkSource->resize($watermarkSize, null, function ($constraint) {
$constraint->aspectRatio();
});
$thumbnail->insert($watermarkSource, 'bottom-left', 0, 0);
$thumbnail->save($name)->destroy();
}
如果我明白你的意思: 水印的纵横比为8:1(水印的宽度是其高度的8倍) 并基于纵横比 2:50 或 1:25,图像的宽度是水印宽度的25倍。 例如:如果图像宽度为 1000px,则水印宽度应为 40px。 所以我们也将图像的宽度传递给 helper.php.
中的addwatermark
函数
use Image;
public static function addwatermark ($name, $imageWidth) {
$watermarkWidth = $imageWidth / 25;
$watermarkHeight = $watermarkWidth / 8;
$watermarkSource = 'public/img/watermark/watermark.png';
$watermark= Image::make($name)->resize($watermarkWidth, $watermarkHeight)->insert($watermarkSource, 'bottom-left', 0, 0);
$watermark->save($name)->destroy();
}
如有错误,请告知,谢谢