• 文字转图片,文字水印图片,合成图片,教你 Python 生成网站原创配图!


    又是为站佬们服务(写)水文的一篇,如何应用python来生成或者说是合成自己的原创图片,适合各位站群大佬哥们生成自己的图片,避免没有配图或者侵权碰瓷的尴尬,当然本渣渣这里分享的仅仅是源码demo,后续使用到生产上,还是需要修改的。

    随着互联网越来越规范,关于版权方面的意思也愈发增强,同时各种维权,以及侵权时有发生,而网站配图还是需要有的,毕竟图文并茂,同时网页快照能有图片,无疑是非常有利于用户及搜索引擎的。

    下面本渣渣就通过几个 demo 来为大家简单谈谈如何应用 Python 生成自己网站的原创图片,麻麻再也不用担心我的网站配图了!

    使用到的第三方库

    1. pygame

    库安装

    pip install pygame
    1. PIL

    库安装

    pip install pygame
    1. qrcode

    库安装

    pip install qrcode

    几个简单的demo源码参考

    1. 应用 pygame 库文字转图片

    1. #文字生成图片
    2. #微信:huguo00289
    3. # -*- coding: utf-8 -*-
    4. #载入必要的模块
    5. import pygame
    6. #pygame初始化
    7. pygame.init()
    8. # 待转换文字
    9. text = u"文字转图片"
    10. #设置字体和字号
    11. font = pygame.font.SysFont('microsoft yahei'200)
    12. #渲染图片,设置背景颜色和字体样式,前面的颜色是字体颜色
    13. ftext = font.render(text, True, (6583130),(255255255))
    14. #保存图片
    15. pygame.image.save(ftext, "image.jpg")#图片保存地址

    运行效果:

    dbba54f7c3844267bb3aa99736fde31f.png

    1. 应用 PIL 库文字转图片

    1. #文字生成图片
    2. #微信:huguo00289
    3. # -*- coding: utf-8 -*-
    4. #import os
    5. from PIL import Image,ImageFont,ImageDraw
    6. text = u"这是一段测试文本" #文字信息
    7. im = Image.new("RGB", (300200), (255255255)) #设置色彩模式,图片大小,颜色
    8. dr = ImageDraw.Draw(im)
    9. # font = ImageFont.truetype(os.path.join("fonts""msyh.ttf"), 14)
    10. font = ImageFont.truetype(font="msyh.ttf", size=20,encoding="utf-8")  #设置字体及大小
    11. dr.text((5080), text, font=font, fill="#000000")  #设置xy坐标轴,填充颜色
    12. im.show() #展示图片
    13. im.save(r'output.png') #保存图片

    运行效果:

    551846066d9f89bed06e23bf934ecf99.png

    此案例demo比较适合成语、词语、文学类网站生成配图使用!

    1. 应用 PIL 库合并图片

    1. #合成图片
    2. #微信:huguo00289
    3. # -*- coding: utf-8 -*-
    4. from PIL import Image
    5. img1=Image.open("hz.jpg")  #打开文件1
    6. img2=Image.open("a.jpg")  #打开文件2
    7. img1.paste(img2, (535295))  # 添加到海报上 x,y 轴参数
    8. img1.show() #展示图片
    9. img1.save(r'hctp.jpg')  # 保存海报

    运行效果:

    0c8d5873f09a0476ef2e454fc7420ebb.png

    1. 应用 PIL 库文字写入图片或生成水印图片

    1. #文本写入图片
    2. #微信:huguo00289
    3. # -*- coding: utf-8 -*-
    4. from PIL import ImageFont, ImageDraw, Image
    5. img = Image.open("a.jpg") #打开图片
    6. draw = ImageDraw.Draw(img) #读取
    7. fnt = ImageFont.truetype('msyh.ttf'50) #设置字体及大小
    8. text1 = "人生什么时候"
    9. draw.text((100120), text1, fill='blue', font=fnt)  #写入文本1 位置坐标 颜色
    10. text2 = "都不晚"
    11. draw.text((100240), text2, fill='blue', font=fnt) #写入文本2
    12. img.save("txtout.jpg")  #保存图片

    运行效果:

    97c22455b1404f69996982528363f558.png

    1. 应用 qrcode 库文字生成二维码图片

    1. #网址二维码生成图片
    2. #微信:huguo00289
    3. # -*- coding: utf-8 -*-
    4. import qrcode
    5. #make 简单调用
    6. def sc():
    7.     site="http://www.zhongzemin.cn"
    8.     # content="二维码生成器"
    9.     QR_name = 'code.png'  # 二维码名称
    10.     # QR_code = qrcode.make(content) # 生成二维码
    11.     QR_code = qrcode.make(site)  # 生成二维码
    12.     QR_code.save(QR_name)  # 保存二维码
    13.     QR_code.show()
    14. #可修改参数属性 正常调用
    15. def zc():
    16.     site = "http://www.zhongzemin.cn"
    17.     QR_name = 'code.png'  # 二维码名称
    18.     # 实例化QRCode生成qr对象
    19.     qr = qrcode.QRCode(
    20.         version=1, #控制二维码的大小,取值范围从140。取最小值1时,二维码大小为21*21
    21.         error_correction=qrcode.constants.ERROR_CORRECT_H, #控制二维码纠错级别
    22.         box_size=10, #控制二维码中每个格子的像素数,默认为 10
    23.         border=2  #控制二维码四周留白包含的格子数,默认为4
    24.     )
    25.     # 传入数据
    26.     qr.add_data(site)
    27.     # qr.make(fit=True)  #fit=true参数(默认)时,二维码会自动调整大小
    28.     # 生成二维码
    29.     img = qr.make_image()
    30.     # 保存二维码
    31.     img.save(QR_name)
    32.     # 展示二维码
    33.     img.show()
    34. if __name__=='__main__':
    35.     #sc()
    36.     zc()

    运行效果:

    45a0b1d42812ee4569c5d9e78966c7a7.png

    综合应用demo案例:文字水印二维码合成图片

    1. #文字水印二维码合成图片
    2. #微信:huguo00289
    3. # -*- coding: utf-8 -*-
    4. import qrcode
    5. import time
    6. import os
    7. from PIL import ImageFont, ImageDraw, Image
    8. class Createimg(object):
    9.     def __init__(self,txt,site,bgimg):
    10.         self.txt=txt
    11.         self.site=site
    12.         self.bgimg=Image.open(bgimg)
    13.         self.txt_img="txt_img.jpg"
    14.         self.code_img="txt_img.png"
    15.         self.create_img=f'{int(time.time())}.jpg'  #生成10位时间戳图片名
    16.     def write_txt_img(self):
    17.         draw = ImageDraw.Draw(self.bgimg)  # 读取
    18.         fnt = ImageFont.truetype('msyh.ttf'50)  # 设置字体及大小
    19.         draw.text((100120), self.txt, fill='red', font=fnt)  # 写入文本1 位置坐标 颜色
    20.         self.bgimg.show() #显示图片
    21.         self.bgimg.save(self.txt_img)  # 保存图片
    22.         print("文字写入图片成功!")
    23.     def create_code(self):
    24.         # 实例化QRCode生成qr对象
    25.         qr = qrcode.QRCode(
    26.             version=1,  # 控制二维码的大小,取值范围从140。取最小值1时,二维码大小为21*21
    27.             error_correction=qrcode.constants.ERROR_CORRECT_H,  # 控制二维码纠错级别
    28.             box_size=10,  # 控制二维码中每个格子的像素数,默认为 10
    29.             border=2  # 控制二维码四周留白包含的格子数,默认为4
    30.         )
    31.         # 传入数据
    32.         qr.add_data(self.site)
    33.         img = qr.make_image()
    34.         img.save(self.code_img)
    35.         img.show()
    36.         print("生成二维码成功!")
    37.     def merge_imgs(self):
    38.         img1 = Image.open(self.txt_img)  # 打开文件1
    39.         img2 = Image.open(self.code_img)  # 打开文件2
    40.         img1.paste(img2, (535295))  # 添加到海报上 x,y 轴参数
    41.         img1.show()  # 展示图片
    42.         img1.save(self.create_img)  # 保存海报
    43.         print("合并图片成功!")
    44.     def main(self):
    45.         self.write_txt_img()  #写入文本信息
    46.         self.create_code()    #生成二维码图片
    47.         self.merge_imgs()     #合成图片
    48.         os.remove(self.txt_img)  #删除写入文本图片
    49.         os.remove(self.code_img) #删除二维码图片
    50. if __name__=='__main__':
    51.     bgimg=r'hz.jpg'
    52.     txt=u"文字水印二维码合成图片"
    53.     site="http://www.zhongzemin.cn"
    54.     C=Createimg(txt,site,bgimg) #初始化
    55.     C.main()

    运行效果:

    732f93587acbebc2cb3216723f0ffa5c.png

    d4d30f4d44ddcd35bbeceff7a1e072ea.png

    注意:应用以上方法的时候一定要使用免费可商用字体及免费可商用图片作为背景图使用!

    以上代码仅供参考,如想要学习研究,不妨多参考一下文末附上的参考链接。

    参考链接:

    1.Python之文字转图片方法

    https://www.jb51.net/article/139839.htm

    2.python实现文字转图片

    https://zhuanlan.zhihu.com/p/149445150

    3.【Python实例分析】批量生成海报--自动添加姓名和二维码

    https://blog.csdn.net/aa12551827/article/details/109029222

    4.python使用PIL给图片添加文字生成海报示例

    http://www.zzvips.com/article/151118.html

    5.python之qrcode模块生成二维码

    https://www.jianshu.com/p/c0073c6aa544

    6.Python使用qrcode二维码库生成二维码方法详解

    https://www.jb51.net/article/180609.htm

    7.Python往图片写入文字,插入图片的方法

    https://blog.csdn.net/caimengxin/article/details/119793566

    ·················END·················

    你好,我是二大爷,

    革命老区外出进城务工人员,

    互联网非早期非专业站长,

    喜好python,写作,阅读,英语

    不入流程序,自媒体,seo . . .

    公众号不挣钱,交个网友。

    读者交流群已建立,找到我备注 “交流”,即可获得加入我们~

    听说点 “在看” 的都变得更好看呐~

    关注关注二大爷呗~给你分享python,写作,阅读的内容噢~

    扫一扫下方二维码即可关注我噢~

    ff4b753344981c9abc935ca064cb5b8c.png

    9472e40dbbbc938bbadafd145a6ec285.png

    关注我的都变秃了

    说错了,都变强了!

    不信你试试

    a072d864d2a08719569043fdadbb8e68.png

    扫码关注最新动态

    公众号ID:eryeji

  • 相关阅读:
    Linux18 Shell编程
    Qt 实现软件启动界面动画
    高并发编程:并发容器
    Mybatis 动态Sql标签使用总结
    计算机毕业设计ssm软件项目Bug管理系统612ed系统+程序+源码+lw+远程部署
    解决Web server failed to start. Port XXXX was already in use.
    Python一周小结
    jQuery的学习(一篇文章齐全)
    【嵌入式项目应用】__cJSON在单片机的使用
    记录Manjaro Linux安装nvidia显卡驱动失败的经历
  • 原文地址:https://blog.csdn.net/minge89/article/details/124893115