推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
cc7756789
V2EX  ›  Python

Python 如何批量合成价格水印图片?

  •  
  •   cc7756789 · May 11, 2020 · 3770 views
    This topic created in 2213 days ago, the information mentioned may be changed or developed.

    网上看了不少教程,都没有满意的,不是全用一样的水印,就是大小、位置、分辨率、字体这些都没有介绍。现在的需求是这样:

    产品主图需要打上不同价格的水印。 水印是一个简单的图形,扁平图案这种,在上面打上不同的价格。 但问题是不同货号的产品价格不一样。 用 PS 一个个做太烦了。 以前写过代码,现在干美工。基础知识是不用考虑的。 那么问题来了,python 有无好用方便的库。

    把货号和对应价格写在 Excel 里。 但是一张透明背景的 png,如何把对应数字合成在上面,有字体要求(大小、字间距、颜色、字体家族),也有位置要求,以及大小,分辨率要求。 合成了价格水印之后,通过水印图片名称和主图图片名称匹配,然后再次合成到主图的某个位置。 以下是思维导图。

    6 replies    2020-05-12 16:46:09 +08:00
    iConnect
        1
    iConnect  
       May 11, 2020 via Android
    手写一个也不麻烦:读 Excel,然后 pillow 合成图片。
    AlisaDestiny
        2
    AlisaDestiny  
       May 12, 2020
    就是说根据不同型号生成不同的价格水印,再贴到物品图上把。这也不难啊。手里有锤子还怕没办法处理各种形状的钉子。
    niqiu8
        3
    niqiu8  
       May 12, 2020 via Android
    活动打标??干嘛不用 ps 或者 ai 的变量功能? python 的话 pillow 可以实现
    chaneyccy
        4
    chaneyccy  
       May 12, 2020
    没记错的话 PS 批处理也可以实现吧
    cra2y4ngel
        5
    cra2y4ngel  
       May 12, 2020
    from PIL import Image,ImageDraw,ImageFont

    im = Image.open('my_pic.png')

    w, h = im.size

    watermark = Image.new('RGBA', im.size) # 水印

    draw = ImageDraw.Draw(watermark, 'RGBA')

    # 设置文字大小

    font_size = 180

    # 设置字体
    font_file = "C:\\Windows\\Font\\simsun.ttc"

    font = ImageFont.truetype(font_file,font_size )

    draw.text((0, 0), '这是水印内容', fill="#ff0000", font=font)
    # 第一个参数:表示文字起始坐标
    # 第二个参数:表示写入内容
    # fill:表示颜色
    # font:字体


    # 旋转 45 度
    watermark = watermark.rotate(-45, Image.BICUBIC)

    # 透明的
    alpha = watermark.split()[3]
    alpha = ImageEnhance.Brightness(alpha).enhance(0.7)
    watermark.putalpha(alpha)

    # 合成新的图片
    n = Image.composite(watermark, im, watermark)
    n.save('new_watermark.png', 'PNG')
    sunmker
        6
    sunmker  
       May 12, 2020
    使用 ImageMagick 写个小脚本
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3055 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 15:02 · PVG 23:02 · LAX 08:02 · JFK 11:02
    ♥ Do have faith in what you're doing.