python学习:pillow/水印/改变大小
一个与图片处理相关的库
安装
# pillow
pip install -U Pillow
# resize
pip install python-resize-image
case1: 添加图片水印
- 主图
- 水印图(样式,旋转,透明度都调好了)
- 给一个位置
- 组合出目标图/或者
buffer
推荐使用自己的库
jsw-pillow
来完成日常的水印添加工作。
pip install jsw-pillow
Watermark.single(
source='./__tests__/assets/test.png',
text='js.work',
font_size=50,
angle=45,
position='center',
color=(0, 255, 0, int(255 * 0.5)),
)
case2: resize
pip install python-resize-image
case3 paste
用于将一张图,paste 到另一张图上; https://note.nkmk.me/en/python-pillow-paste/
正常情况下 composite 的逻辑,应该是用 composite API,不过,pillow 限制了2张图,必须 size 一样,才可以 composite,所以,一般这种水印的 composite 场景, 我会使用 paste API 完成。
case 将图片转化为 pdf
其实就是扫瞄的功能,因为手边没有扫瞄仪器,所以,用这段代码代替。
from PIL import Image
imgs = [
'hetong/WechatIMG228.jpeg',
'hetong/WechatIMG229.jpeg',
'hetong/WechatIMG230.jpeg',
'hetong/WechatIMG231.jpeg',
'hetong/WechatIMG232.jpeg',
'hetong/WechatIMG233.jpeg',
]
# 注意“L”,是将图片转化为黑白的, “RGB” 则为彩色
def export_pdf(imgs, pdf_name):
img = Image.open(imgs[0]).convert('L')
img_list = [img]
for i in range(1, len(imgs)):
img = Image.open(imgs[i]).convert('L')
img_list.append(img)
img_list[0].save(pdf_name, "PDF", resolution=100.0,
save_all=True, append_images=img_list[1:])
if __name__ == '__main__':
export_pdf(imgs, 'hetong/hetong.pdf')
常用功能 cheatsheet
功能 | 代码 |
---|---|
读取远程图片1 |
|
读取远程图片2 |
|
使用字体 |
|
字体的 bound 信息 |
|
缩略图 |
|
调整大小 |
|
参考
- https://www.liaoxuefeng.com/wiki/1016959663602400/1017785454949568
- https://holypython.com/how-to-watermark-images-w-python-pil/
- https://stackoverflow.com/questions/62910445/watermarking-pasting-rotated-text-to-empty-image
- https://stackoverflow.com/questions/646286/how-to-write-png-image-to-string-with-the-pil
- https://pypi.org/project/python-resize-image/
- http://c.biancheng.net/pillow/add-watermark.html
- https://www.jianshu.com/p/2ff8e6f98257
- https://note.nkmk.me/en/python-pillow-paste/