Spaces:
Running
Running
刘宇轩
commited on
Commit
·
babe760
1
Parent(s):
bc342c5
watermark
Browse files- asset/chaojihui45-v2.png +0 -0
- watermark.py +68 -7
asset/chaojihui45-v2.png
ADDED
![]() |
watermark.py
CHANGED
@@ -1,4 +1,53 @@
|
|
|
|
|
|
1 |
from PIL import Image
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
|
4 |
|
@@ -7,10 +56,12 @@ class WatermarkApp:
|
|
7 |
pass
|
8 |
|
9 |
def process_image(self, image):
|
10 |
-
watermark = Image.open('asset/
|
11 |
# 获取水印的等比例缩放尺寸
|
12 |
wm_width, wm_height = watermark.size
|
13 |
-
|
|
|
|
|
14 |
alpha = 0.3
|
15 |
|
16 |
if wm_width > wm_height:
|
@@ -25,15 +76,24 @@ class WatermarkApp:
|
|
25 |
# 处理透明度
|
26 |
if alpha < 1.0:
|
27 |
wm = self.apply_transparency(wm, alpha)
|
28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
# 确保原图是RGBA模式
|
30 |
if image.mode != 'RGBA':
|
31 |
image = image.convert('RGBA')
|
32 |
|
33 |
-
|
34 |
-
for y in range(0, image.height, new_wm_height):
|
35 |
-
for x in range(0, image.width, new_wm_width):
|
36 |
-
image.alpha_composite(wm, dest=(x, y))
|
37 |
return image
|
38 |
|
39 |
def apply_transparency(self, watermark, alpha):
|
@@ -42,3 +102,4 @@ class WatermarkApp:
|
|
42 |
watermark.putalpha(matrix)
|
43 |
return watermark
|
44 |
|
|
|
|
1 |
+
import os
|
2 |
+
import oss2
|
3 |
from PIL import Image
|
4 |
+
import gradio as gr
|
5 |
+
import numpy as np
|
6 |
+
from io import BytesIO
|
7 |
+
|
8 |
+
|
9 |
+
|
10 |
+
# class WatermarkApp:
|
11 |
+
# def __init__(self):
|
12 |
+
# pass
|
13 |
+
|
14 |
+
# def process_image(self, image):
|
15 |
+
# watermark = Image.open('asset/chaojihui-v2.png')
|
16 |
+
# # 获取水印的等比例缩放尺寸
|
17 |
+
# wm_width, wm_height = watermark.size
|
18 |
+
# import random
|
19 |
+
# # target_size = random.randint(100, 300)
|
20 |
+
# target_size = 100
|
21 |
+
# alpha = 0.3
|
22 |
+
|
23 |
+
# if wm_width > wm_height:
|
24 |
+
# new_wm_width = target_size
|
25 |
+
# new_wm_height = int((wm_height / wm_width) * target_size)
|
26 |
+
# else:
|
27 |
+
# new_wm_height = target_size
|
28 |
+
# new_wm_width = int((wm_width / wm_height) * target_size)
|
29 |
+
|
30 |
+
# wm = watermark.resize((new_wm_width, new_wm_height), Image.Resampling.LANCZOS)
|
31 |
+
|
32 |
+
# # 处理透明度
|
33 |
+
# if alpha < 1.0:
|
34 |
+
# wm = self.apply_transparency(wm, alpha)
|
35 |
+
|
36 |
+
# # 确保原图是RGBA模式
|
37 |
+
# if image.mode != 'RGBA':
|
38 |
+
# image = image.convert('RGBA')
|
39 |
+
|
40 |
+
# # 在整个图片上铺满水印
|
41 |
+
# for y in range(0, image.height, new_wm_height):
|
42 |
+
# for x in range(0, image.width, new_wm_width):
|
43 |
+
# image.alpha_composite(wm, dest=(x, y))
|
44 |
+
# return image
|
45 |
+
|
46 |
+
# def apply_transparency(self, watermark, alpha):
|
47 |
+
# """应用透明度"""
|
48 |
+
# matrix = watermark.split()[-1].point(lambda x: x * alpha)
|
49 |
+
# watermark.putalpha(matrix)
|
50 |
+
# return watermark
|
51 |
|
52 |
|
53 |
|
|
|
56 |
pass
|
57 |
|
58 |
def process_image(self, image):
|
59 |
+
watermark = Image.open('asset/chaojihui-v2.png')
|
60 |
# 获取水印的等比例缩放尺寸
|
61 |
wm_width, wm_height = watermark.size
|
62 |
+
import random
|
63 |
+
# target_size = random.randint(100, 300)
|
64 |
+
target_size = 100
|
65 |
alpha = 0.3
|
66 |
|
67 |
if wm_width > wm_height:
|
|
|
76 |
# 处理透明度
|
77 |
if alpha < 1.0:
|
78 |
wm = self.apply_transparency(wm, alpha)
|
79 |
+
|
80 |
+
double_image = Image.new('RGBA', (image.width * 2, image.height * 2), (0, 0, 0, 0))
|
81 |
+
for y in range(0, double_image.height, new_wm_height):
|
82 |
+
for x in range(0, double_image.width, new_wm_width):
|
83 |
+
double_image.alpha_composite(wm, dest=(x, y))
|
84 |
+
|
85 |
+
angle = random.uniform(-180, 180)
|
86 |
+
double_image = double_image.rotate(angle)
|
87 |
+
|
88 |
+
print(double_image)
|
89 |
+
double_image = double_image.crop((image.width//2, image.height//2, (image.width*3)//2, (image.height*3)//2)).resize(image.size, Image.Resampling.LANCZOS)
|
90 |
+
print(double_image)
|
91 |
+
|
92 |
# 确保原图是RGBA模式
|
93 |
if image.mode != 'RGBA':
|
94 |
image = image.convert('RGBA')
|
95 |
|
96 |
+
image.alpha_composite(double_image, dest=(0, 0))
|
|
|
|
|
|
|
97 |
return image
|
98 |
|
99 |
def apply_transparency(self, watermark, alpha):
|
|
|
102 |
watermark.putalpha(matrix)
|
103 |
return watermark
|
104 |
|
105 |
+
|