如何解决照片中的水印
我正在照片中添加水印。如何一次为多张照片制作水印?以及如何一次保存多张照片?应该是哪个循环,在代码的哪个部分?
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
from PIL import ImageOps
def watermark_text(input_image_path,output_image_path,text,pos):
photo = Image.open(input_image_path)
drawing = ImageDraw.Draw(photo)
white = (3,8,12)
font = ImageFont.truetype("/Roboto-Regular.ttf",150)
drawing.text(pos,fill=white,font=font)
photo.show()
photo.save(output_image_path)
if __name__ == '__main__':
img = 'new7093.JPG'
watermark_text(img,'11112.JPG',text='sportves.ru',pos=(300,500))
解决方法
如何使用多处理。
from concurrent.futures import ProcessPoolExecutor
import os
img_list = os.listdir('path-to-image')
output_img_list = [i +'.output' for i in img_list]
text='sportves.ru'
pos=(300,500)
with ThreadPoolExecutor(max_workers=4) as executor:
futures = [executor.submit(watermark_text,input_image_path,output_image_path,text,pos)
for input_image_path,output_image_path
in zip(img_list,output_img_list)
]
,
它应该可以工作)。替换保存路径并附加图像以放置水印。
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
def watermark_text(input_image_path,pos):
global new_images
photo = Image.open(input_image_path)
drawing = ImageDraw.Draw(photo)
white = (3,8,12)
font = ImageFont.truetype("/Roboto-Regular.ttf",150)
drawing.text(pos,fill=white,font=font)
photo.show()
new_images.append(photo)
if __name__ == '__main__':
images = ['new7093.JPG','something.phg'] # list of photos without watermark
new_images = [] # list of photos with watermark
for img in images:
watermark_text(img,'11112.JPG',text='sportves.ru',pos=(300,500))
new_images[0].save(r'C:\Users\You\Desktop',save_all=True,append_images=new_images[1:]) # replace by you path
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。