乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      使用Python批量給圖片添加文字

       hercules028 2022-07-11 發(fā)布于四川
      excelperfect

      標(biāo)簽:PythonPillow
      你知道Python可以幫助向圖像中添加文本嗎?雖然Python不是圖形編輯軟件,但它能夠很好地處理圖像文件。在本文中,將在多個(gè)圖像上放置一個(gè)示例文本“ExcelPerfect”。不用手動(dòng)操作,也不用使用一些昂貴的軟件,可以使用Python輕易達(dá)到同樣的效果。
      這里需要使用PILLOW庫(Python Imaging Library),使用pip命令安裝:
      pip install Pillow
      Pillow庫允許打開、修改和保存圖片文件。
      要導(dǎo)入Pillow庫,需要使用:
      import PIL
      而不是:
      import Pillow
      我們將使用Pillow中的3個(gè)子模塊:
      • Image:用于打開和保存圖片文件的圖像文件類。
      • ImageDraw:用于創(chuàng)建新圖像的類,我們將使用它向圖片中添加文本。
      • ImageFont:文本字體。
      讀取圖片文件到Python
      首先,讀取圖片文件到Python
      import PIL
      from PIL import (Image,
      ImageFont,
      ImageDraw)
      img = Image.open(r'D:\完美Excel\flower.jpg')
      如果使用的是Jupyter Notebook的話,可以使用內(nèi)置函數(shù)display()notebook中顯示圖片,如下圖1所示。
      圖片
      1
      字體
      可以為添加到圖片中的文字選擇不同的字體。如果在Windows操作系統(tǒng)中,可以在Wondows搜索欄搜索“字體”,然后單擊“字體設(shè)置”。
      在“字體設(shè)置”中,可以看到許多不同的字體,也能從網(wǎng)上下載新字體供后面使用。
      這里想使用字體“Gill Sans”,能夠從設(shè)置中找到該字體文件的位置,如下圖2所示。
      圖片
      2
      有了這個(gè)字體文件,現(xiàn)在可以創(chuàng)建一個(gè)字體對(duì)象,在Python中的圖像上部繪制。在下面的代碼行中:
      1.第一個(gè)參數(shù)是字體文件的URL。
      2.第二個(gè)參數(shù)是字體大小。在這里使用的是30。
      font = ImageFont.truetype(r'C:\WINDOWS\FONTS\GILSANUB.TTF',30)
      Python Pillow:添加文本到圖片
      現(xiàn)在需要?jiǎng)?chuàng)建一個(gè)ImageDraw對(duì)象來修改該圖像。下面的draw.text()接受以下參數(shù):
      1.(10,10)–起始位置的(x,y)坐標(biāo)
      2.font–剛剛創(chuàng)建的ImageFont
      3.fill–文本的RGB顏色值(255表示白色,0表示黑色)
      draw = ImageDraw.Draw(img)
      draw.text((10,10),'ExcelPerfect', font = font, fill = (255, 255, 255))
      注意,ImageDraw對(duì)象實(shí)際上修改了Image對(duì)象。為了顯示更新后的圖像,可以再次使用display(img)
      圖片
      3
      將文本放置在左下角
      要將文本放在右下角,需要做幾件事:
      1.確定文本的大小,這應(yīng)該動(dòng)態(tài)設(shè)置,因?yàn)槊總€(gè)圖像的大小不同。
      2.此外,動(dòng)態(tài)確定文本的起始(x,y)坐標(biāo)。由于圖像大小不同,坐標(biāo)會(huì)有所不同。
      可以通過調(diào)用size屬性來獲得圖像(即畫布)的大小。在本例中,我們的圖像寬869像素,高633像素。
      圖片
      4
      我們將設(shè)置文本大小,使整個(gè)文本行大約占圖像寬度的1/3
      ImageFont對(duì)象的默認(rèn)字體大小為10。要獲取文本尺寸(寬度和高度)并計(jì)算比例因子,執(zhí)行以下操作:
      default_font_size = 10
      text = 'ExcelPerfect'
      text_width, text_height = ImageFont.truetype(r'C:\WINDOWS\FONTS\GILSANUB.TTF').getsize(text)
      img = Image.open(r'D:\完美Excel\flower.jpg')
      img_width, img_height = img.size
      scaler = img_width/3/text_width
      scaler
      如下圖5所示。
      圖片
      5
      在這個(gè)例子中,scaler大約是3.5,這意味著我們的字體大小將是10*3.5=35。文本寬度和高度也將相應(yīng)縮放。
      scale_text_font = int(default_font_size * scaler)
      scale_text_width = int(scaler * text_width)
      scale_text_height = int(scaler * text_height)
      font = ImageFont.truetype(r'C:\WINDOWS\FONTS\GILSANUB.TTF', size = scale_text_font)
      draw = ImageDraw.Draw(img)
      start_x = img_width - scale_text_width - 20
      start_y = img_height - scale_text_height - 20
      draw.text((start_x, start_y), text = text, font = font, fill = (255,255,255))
      img.save(r'D:\完美Excel\flower_w_text.jpg')
      結(jié)果如下圖6所示。
      圖片
      6
      添加文件到多個(gè)圖片
      要向多個(gè)圖像添加文本,讓我們將所有圖像放在同一個(gè)文件夾中。然后可以使用os.listdir()從該文件夾中獲取所有文件名,并處理每個(gè)文件。完整代碼如下:
      import os
      from PIL import (Image,
      ImageFont,
      ImageDraw)
      default_font_size = 10
      text = 'ExcelPerfect'
      text_width, text_height = ImageFont.truetype(r'C:\WINDOWS\FONTS\GILSANUB.TTF').getsize(text)
      folder_path = r'D:\完美Excel\images'
      for f in os.listdir(folder_path):
      img = Image.open(rf'{folder_path}\{f}')
      img_width, img_height = img.size
      scaler = img_width/2/text_width
      scale_text_font = int(default_font_size * scaler)
      scale_text_width = int(scaler * text_width)
      scale_text_height = int(scaler * text_height)
      font = ImageFont.truetype(r'C:\WINDOWS\FONTS\GILSANUB.TTF', size = scale_text_font)
      draw = ImageDraw.Draw(img)
      start_x = img_width - scale_text_width - 20
      start_y = img_height - scale_text_height - 20
      draw.text((start_x, start_y), text = text, font = font, fill = (0,0,0))
      file_name = f.split('.')[0] + '_w_text.jpg'
      img.save(rf'{folder_path}\{file_name}')
      注:本文學(xué)習(xí)整理自pythoninoffice.com,供有興趣的朋友學(xué)習(xí)參考。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多