又是為站佬們服務(寫)水文的一篇,如何應用來生成或者說是合成自己的原創圖片,適合各位站群大佬哥們生成自己的圖片,避免沒有配圖或者侵權碰瓷的尷尬,當然本渣渣這里分享的僅僅是源碼demo,后續使用到生產上,還是需要修改的。
隨著互聯網越來越規范,關于版權方面的意思也愈發增強,同時各種維權,以及侵權時有發生可以配圖寫文字的軟件,而網站配圖還是需要有的,畢竟圖文并茂,同時網頁快照能有圖片,無疑是非常有利于用戶及搜索引擎的。
下面本渣渣就通過幾個 demo 來為大家簡單談談如何應用 生成自己網站的原創圖片,麻麻再也不用擔心我的網站配圖了!
使用到的第三方庫
庫安裝
pip?install?pygame
PIL
庫安裝
pip?install?pygame
庫安裝
pip?install?qrcode
幾個簡單的demo源碼參考
應用 庫文字轉圖片
#文字生成圖片
#微信:huguo00289
#?-*-?coding:?utf-8?-*-
#載入必要的模塊
import?pygame
#pygame初始化
pygame.init()
#?待轉換文字
text?=?u"文字轉圖片"
#設置字體和字號
font?=?pygame.font.SysFont('microsoft?yahei',?200)
#渲染圖片,設置背景顏色和字體樣式,前面的顏色是字體顏色
ftext?=?font.render(text,?True,?(65,?83,?130),(255,?255,?255))
#保存圖片
pygame.image.save(ftext,?"image.jpg")#圖片保存地址
運行效果:
應用 PIL 庫文字轉圖片
#文字生成圖片
#微信:huguo00289
#?-*-?coding:?utf-8?-*-
#import?os
from?PIL?import?Image,ImageFont,ImageDraw
text?=?u"這是一段測試文本"?#文字信息
im?=?Image.new("RGB",?(300,?200),?(255,?255,?255))?#設置色彩模式,圖片大小,顏色
dr?=?ImageDraw.Draw(im)
#?font?=?ImageFont.truetype(os.path.join("fonts",?"msyh.ttf"),?14)
font?=?ImageFont.truetype(font="msyh.ttf",?size=20,encoding="utf-8")??#設置字體及大小
dr.text((50,?80),?text,?font=font,?fill="#000000")??#設置xy坐標軸,填充顏色
im.show()?#展示圖片
im.save(r'output.png')?#保存圖片
運行效果:
此案例demo比較適合成語、詞語、文學類網站生成配圖使用!
應用 PIL 庫合并圖片
#合成圖片
#微信:huguo00289
#?-*-?coding:?utf-8?-*-
from?PIL?import?Image
img1=Image.open("hz.jpg")??#打開文件1
img2=Image.open("a.jpg")??#打開文件2
img1.paste(img2,?(535,?295))??#?添加到海報上?x,y?軸參數
img1.show()?#展示圖片
img1.save(r'hctp.jpg')??#?保存海報
運行效果:
應用 PIL 庫文字寫入圖片或生成水印圖片
#文本寫入圖片
#微信:huguo00289
#?-*-?coding:?utf-8?-*-
from?PIL?import?ImageFont,?ImageDraw,?Image
img?=?Image.open("a.jpg")?#打開圖片
draw?=?ImageDraw.Draw(img)?#讀取
fnt?=?ImageFont.truetype('msyh.ttf',?50)?#設置字體及大小
text1?=?"人生什么時候"
draw.text((100,?120),?text1,?fill='blue',?font=fnt)??#寫入文本1?位置坐標?顏色
text2?=?"都不晚"
draw.text((100,?240),?text2,?fill='blue',?font=fnt)?#寫入文本2
img.save("txtout.jpg")??#保存圖片
運行效果:
應用 庫文字生成二維碼圖片
#網址二維碼生成圖片
#微信:huguo00289
#?-*-?coding:?utf-8?-*-
import?qrcode
#make?簡單調用
def?sc():
????site="http://www.zhongzemin.cn"
????#?content="二維碼生成器"
????QR_name?=?'code.png'??#?二維碼名稱
????#?QR_code?=?qrcode.make(content)?#?生成二維碼
????QR_code?=?qrcode.make(site)??#?生成二維碼
????QR_code.save(QR_name)??#?保存二維碼
????QR_code.show()
#可修改參數屬性?正常調用
def?zc():
????site?=?"http://www.zhongzemin.cn"
????QR_name?=?'code.png'??#?二維碼名稱
????#?實例化QRCode生成qr對象
????qr?=?qrcode.QRCode(
????????version=1,?#控制二維碼的大小,取值范圍從1到40。取最小值1時,二維碼大小為21*21。
????????error_correction=qrcode.constants.ERROR_CORRECT_H,?#控制二維碼糾錯級別
????????box_size=10,?#控制二維碼中每個格子的像素數,默認為?10
????????border=2??#控制二維碼四周留白包含的格子數,默認為4
????)
????#?傳入數據
????qr.add_data(site)
????#?qr.make(fit=True)??#fit=true參數(默認)時,二維碼會自動調整大小
????#?生成二維碼
????img?=?qr.make_image()
????#?保存二維碼
????img.save(QR_name)
????#?展示二維碼
????img.show()
if?__name__=='__main__':
????#sc()
????zc()
運行效果:
綜合應用demo案例:文字水印二維碼合成圖片
#文字水印二維碼合成圖片
#微信:huguo00289
#?-*-?coding:?utf-8?-*-
import?qrcode
import?time
import?os
from?PIL?import?ImageFont,?ImageDraw,?Image
class?Createimg(object):
????def?__init__(self,txt,site,bgimg):
????????self.txt=txt
????????self.site=site
????????self.bgimg=Image.open(bgimg)
????????self.txt_img="txt_img.jpg"
????????self.code_img="txt_img.png"
????????self.create_img=f'{int(time.time())}.jpg'??#生成10位時間戳圖片名
????def?write_txt_img(self):
????????draw?=?ImageDraw.Draw(self.bgimg)??#?讀取
????????fnt?=?ImageFont.truetype('msyh.ttf',?50)??#?設置字體及大小
????????draw.text((100,?120),?self.txt,?fill='red',?font=fnt)??#?寫入文本1?位置坐標?顏色
????????self.bgimg.show()?#顯示圖片
????????self.bgimg.save(self.txt_img)??#?保存圖片
????????print("文字寫入圖片成功!")
????def?create_code(self):
????????#?實例化QRCode生成qr對象
????????qr?=?qrcode.QRCode(
????????????version=1,??#?控制二維碼的大小,取值范圍從1到40。取最小值1時,二維碼大小為21*21。
????????????error_correction=qrcode.constants.ERROR_CORRECT_H,??#?控制二維碼糾錯級別
????????????box_size=10,??#?控制二維碼中每個格子的像素數,默認為?10
????????????border=2??#?控制二維碼四周留白包含的格子數,默認為4
????????)
????????#?傳入數據
????????qr.add_data(self.site)
????????img?=?qr.make_image()
????????img.save(self.code_img)
????????img.show()
????????print("生成二維碼成功!")
????def?merge_imgs(self):
????????img1?=?Image.open(self.txt_img)??#?打開文件1
????????img2?=?Image.open(self.code_img)??#?打開文件2
????????img1.paste(img2,?(535,?295))??#?添加到海報上?x,y?軸參數
????????img1.show()??#?展示圖片
????????img1.save(self.create_img)??#?保存海報
????????print("合并圖片成功!")
????def?main(self):
????????self.write_txt_img()??#寫入文本信息
????????self.create_code()????#生成二維碼圖片
????????self.merge_imgs()?????#合成圖片
????????os.remove(self.txt_img)??#刪除寫入文本圖片
????????os.remove(self.code_img)?#刪除二維碼圖片
if?__name__=='__main__':
????bgimg=r'hz.jpg'
????txt=u"文字水印二維碼合成圖片"
????site="http://www.zhongzemin.cn"
????C=Createimg(txt,site,bgimg)?#初始化
????C.main()
運行效果:
注意:應用以上方法的時候一定要使用免費可商用字體及免費可商用圖片作為背景圖使用!
以上代碼僅供參考,如想要學習研究,不妨多參考一下文末附上的參考鏈接。
參考鏈接:
1.之文字轉圖片方法
2.實現文字轉圖片
3.【實例分析】批量生成海報--自動添加姓名和二維碼
4.使用PIL給圖片添加文字生成海報示例
5.之模塊生成二維碼
6.使用二維碼庫生成二維碼方法詳解
7.往圖片寫入文字,插入圖片的方法
·················END·················
你好,我是二大爺,
革命老區外出進城務工人員,
互聯網非早期非專業站長,
喜好,寫作,閱讀,英語
不入流程序可以配圖寫文字的軟件,自媒體,seo . . .
公眾號不掙錢,交個網友。
讀者交流群已建立,找到我備注 “交流”,即可獲得加入我們~
聽說點 “在看” 的都變得更好看吶~
關注關注二大爺唄~給你分享,寫作,閱讀的內容噢~