mirror of
https://gitee.com/ulthon/ulthon_information.git
synced 2026-03-04 00:24:29 +08:00
87 lines
2.7 KiB
PHP
87 lines
2.7 KiB
PHP
<?php
|
||
|
||
namespace app\common\tools;
|
||
|
||
use Intervention\Image\Exception\NotReadableException;
|
||
use Intervention\Image\Exception\NotSupportedException;
|
||
use Intervention\Image\Image as ImageImage;
|
||
use Intervention\Image\ImageManagerStatic;
|
||
use SplFileInfo;
|
||
use think\facade\App;
|
||
|
||
class Image
|
||
{
|
||
public static function addWatermark(SplFileInfo $file, $watermark_str = 'phpreturn.com'):ImageImage|bool
|
||
{
|
||
ImageManagerStatic::configure(['driver' => 'imagick']);
|
||
|
||
try {
|
||
$img = ImageManagerStatic::make($file->getPathname());
|
||
} catch (NotReadableException|NotSupportedException $th) {
|
||
return false;
|
||
}
|
||
|
||
$font_size = 20;
|
||
|
||
// 字体大小为宽度的 1/20
|
||
$font_size = $img->width() / 40;
|
||
$font_size = ceil($font_size);
|
||
|
||
$x = $img->width() - $font_size;
|
||
$y = $img->height() - $font_size;
|
||
|
||
$img->text($watermark_str, $x + $font_size * 0.05, $y + $font_size * 0.05, function ($font) use ($font_size) {
|
||
$font->file(App::getRootPath() . '/source/font/SourceHanSans-Normal.otf');
|
||
$font->size($font_size);
|
||
$font->color([0, 0, 0, 0.9]);
|
||
$font->align('right');
|
||
$font->valign('bottom');
|
||
});
|
||
$img->text($watermark_str, $x, $y, function ($font) use ($font_size) {
|
||
$font->file(App::getRootPath() . '/source/font/SourceHanSans-Normal.otf');
|
||
$font->size($font_size);
|
||
$font->color([255, 255, 255, 0.9]);
|
||
$font->align('right');
|
||
$font->valign('bottom');
|
||
});
|
||
|
||
return $img;
|
||
}
|
||
|
||
public static function handelWatermarkSave($src, $watermarked_file_save_name = null)
|
||
{
|
||
$src_file = new SplFileInfo($src);
|
||
$watermark_text = get_system_config('watermark_text', 'phpreturn.com');
|
||
|
||
$src_md5 = md5($src . $watermark_text);
|
||
|
||
if (!$watermarked_file_save_name) {
|
||
$watermarked_file_save_name = '/upload/watermark/' . $src_md5 . '.' . $src_file->getExtension();
|
||
}
|
||
|
||
// 如果以jpe结尾,转换为jpg
|
||
$watermarked_file_save_name = str_replace('.jpe', '.jpg', $watermarked_file_save_name);
|
||
|
||
$watermarked_file = App::getRootPath() . '/public' . $watermarked_file_save_name;
|
||
|
||
if (file_exists($watermarked_file)) {
|
||
return $watermarked_file_save_name;
|
||
}
|
||
|
||
if (!is_dir(dirname($watermarked_file))) {
|
||
mkdir(dirname($watermarked_file), 0777, true);
|
||
}
|
||
|
||
$img = static::addWatermark($src_file, $watermark_text);
|
||
|
||
if ($img) {
|
||
$img->save($watermarked_file);
|
||
} else {
|
||
// 把图片复制到新的位置
|
||
copy($src, $watermarked_file);
|
||
}
|
||
|
||
return $watermarked_file_save_name;
|
||
}
|
||
}
|