fix: 水印处理

This commit is contained in:
2025-06-11 15:36:44 +08:00
parent 7afc8f1dbb
commit ac92584ebc

View File

@@ -42,7 +42,7 @@ class Upload
$filemd5 = $file->md5();
$filesha1 = $file->sha1();
$image_model = SysImageUploadRecordModel::md5($filemd5)->find();
$image_model = null; // SysImageUploadRecordModel::md5($filemd5)->find();
if (is_null($image_model)) {
$filename = Filesystem::disk('image')->putFile($param['module'], $file);
// 处理图片
@@ -50,14 +50,19 @@ class Upload
$image = $image_manager->read('.' . $storage . '/' . $filename);
// 水印
list($enabled, $type, $text_options, $image_options) = $this->getWatermarkOptions();
list(
'enabled' => $enabled,
'type' => $type,
'text_options' => $text_options,
'image_options' => $image_options
) = $this->getWatermarkOptions();
if ($enabled) {
// 图片水印
if ($type == 'IMAGE' && $image_options['image'] != '') {
// 读取水印图片
$watermark_image = $image_manager->read($image_options['image']);
$watermark_image = $image_manager->read(public_path() . $image_options['image']);
// 缩放水印图片
$watermark_image->scale($image_options['width'], $image_options['height']);
$watermark_image->scale((int)$image_options['width'], (int)$image_options['height']);
// 绘制水印图片
$image->place(
$watermark_image,
@@ -76,12 +81,14 @@ class Upload
$font_factory = new FontFactory(function(FontFactory $font) use($text_options) {
// 设置字体
$font->filename($text_options['font']);
$font->filename(public_path() . $text_options['font']);
// 设置字体大小
$font->size($text_options['size']);
// 设置字体颜色及透明度
$opacity = dechex((int)ceil(255 * ($text_options['opacity'] / 100)));
$font->color($text_options['color'] . $opacity);
$font->align('left');
$font->valign('top');
});
// 文字尺寸
$font_rect = $image->driver()->fontProcessor()->boxSize($text_options['txt'], $font_factory());
@@ -149,11 +156,11 @@ class Upload
$config_model = new \app\admin\controller\v1\SiteConfig;
$watermark_config = $config_model->getByGroupUniqueLabel('watermark');
return [
'enalbed' => data_get($watermark_config, 'watermark_enabled.value', 0) == 1,
'enabled' => data_get($watermark_config, 'watermark_enabled.value', 0) == 1,
'type' => data_get($watermark_config, 'watermark_type.value', ''),
'text_options' => [
'txt' => data_get($watermark_config, 'watermark_text_value.value', ''),
'font' => data_get($watermark_config, 'watermark_font_family.value', ''),
'font' => data_get($watermark_config, 'watermark_text_font.value', ''),
'size' => (float)data_get($watermark_config, 'watermark_text_size.value', 12),
'color' => data_get($watermark_config, 'watermark_text_color.value', '#000000'),
'position' => data_get($watermark_config, 'watermark_position.value', 'top-left'),
@@ -169,7 +176,7 @@ class Upload
'offset_x' => (int)data_get($watermark_config, 'watermark_offset_x.value', 0),
'offset_y' => (int)data_get($watermark_config, 'watermark_offset_y.value', 0),
'opacity' => (int)data_get($watermark_config, 'watermark_opacity.value', 100),
],
]
];
}
/**