第 0000 題:將你的 QQ 頭像(或者微博頭像)右上角加上紅色的數(shù)字,類似于微信未讀信息數(shù)量那種提示效果。 類似于圖中效果

PLI模塊詳解:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014320027235877860c87af5544f25a8deeb55141d60c5000

第 0000 題:將你的 QQ 頭像(或者微博頭像)右上角加上紅色的數(shù)字,類似于微信未讀信息數(shù)量那種提示效果。 類似于圖中效果
頭像

實(shí)踐:

from PIL import Image,ImageDraw,ImageFont
#import sys
#reload(sys)
#sys.setdefaultencoding('utf-8')

image=Image.open('666.jpg','r')#讀入圖片

draw=ImageDraw.Draw(image)#創(chuàng)建圖片實(shí)例
fill = '#FFA500'#字體顏色

fontsize=int(min(image.width,image.height)/4) #文字尺寸
font=ImageFont.truetype('C:\Windows\Fonts\Arial.ttf',fontsize)#系統(tǒng)字體



draw.text((image.size[0]-fontsize,0),text="99+",fill=fill,font=font) #(文字距左位置,文字距頂位置),文字,文字顏色, 字體

image.save('777.jpg','jpeg')#保存圖片(圖片名稱,圖片格式)

參考示例:

這個問題需要用到PIL庫,涉及到一些非?;镜挠梅ā4a如下:

    from PIL import Image,ImageFont,ImageDraw#從PIL庫導(dǎo)入所需模塊
    import sys
    reload(sys)   #必須要reload
    sys.setdefaultencoding('utf-8')#字符編碼改為utf8


    headPath=r"C:\\github\\PythonExercise\\pictures\\"         
    #頭像圖片路徑
    outputPath=r"C:\\github\\PythonExercise\\pictures\\"       
    #處理后輸出路徑
    fontPath=r"C:\\Windows\\Fonts\\"  
    #字體路徑
    headFile="head.jpg"           #頭像文件
    outFile="output.jpg"          #輸出文件
    #打開圖片,建立畫布
    image=Image.open(headPath+headFile,'r')
    draw=ImageDraw.Draw(image)

    #由圖片大小確定字體大小
    fontsize=min(image.size)/4

    #增加文字
    fontobj=ImageFont.truetype(font=fontPath+"AdobeHeitiStd-Regular.otf",size=fontsize,index=0,encoding='',filename=None)#實(shí)例字體對象
    draw.text((image.size[0]-fontsize,0),text="5",fill=(255,0,0),font=fontobj,anchor=None)#用draw對象的text()方法添加文字  
    image.save(outputPath+outFile)#保存圖片

作為一個Python初學(xué)者,寫這段程序的時候遇到了很多錯誤,首先是路徑,“\”需要用轉(zhuǎn)義字符來轉(zhuǎn)義一下。
在實(shí)例字體對象的時候,需要加載系統(tǒng)中的字體,windows系統(tǒng)的字體文件在C:\windows\fonts目錄下面,一開始加載的時候直接用了資源管理器中顯示的名稱,并且理所當(dāng)然的認(rèn)為文件應(yīng)該是ttf文件。結(jié)果報(bào)錯

IOError: cannot open resource

肯定是找不到文件了,于是從fonts目錄拷貝了一種字體到其它文件夾,發(fā)現(xiàn)文件名稱弄錯了,而且有些字體看起來是一個文件,拷貝到其它文件會變成好幾個文件,而且文件名也跟看起來不太一樣。
為了圖省事,直接把字體文件拷貝到了工作目錄下的pictures文件夾了。

最后調(diào)用text()方法給圖片添加文字時,出現(xiàn)了喜聞樂見的編碼錯誤:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 37: ordinal not in range(128)

利用萬能的Google,解決方法如下:

    import sys
    reload(sys)   #必須要reload
    sys.setdefaultencoding('utf-8')#字符編碼改為utf8
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容