1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Python 萬(wàn)能代碼模版:批量搞圖,秀翻全場(chǎng)(上)

        共 3928字,需瀏覽 8分鐘

         ·

        2021-10-10 01:43

        閱讀本文大概需要6分鐘

        你好,我是悅創(chuàng)。


        前面我寫了:

        1. Python 萬(wàn)能代碼模版:爬蟲代碼篇
        2. Python 萬(wàn)能代碼模版:數(shù)據(jù)可視化篇
        3. Python 萬(wàn)能代碼模版:自動(dòng)辦公,提升 X10 倍工作效率


        最近在準(zhǔn)備拍攝編程類的短視頻,所以耽擱了。接下來(lái)還是和之前一樣,爭(zhēng)取一周一篇,每一篇希望都對(duì)你們有所幫助。


        1. 批量給照片加水印

        需要首先安裝 opencv、pillow:

        pip3 install opencv-python
        pip3 install pillow

        如果手中有非常多的圖片,想保護(hù)自己版權(quán),或者申明來(lái)源,我們可以在圖片上加水印。那如何用 Python 給非常多的圖片批量加上文字水印呢?


        還是以我們?cè)谂老x示例的 3 小節(jié)中批量下載的圖片文件夾為例。


        下述代碼會(huì)給該文件夾下所有圖片的 (width/2, height-30) 這個(gè)坐標(biāo)點(diǎn)加上@黃家寶|www.aiyc.top這個(gè)中文加個(gè)人網(wǎng)址。坐標(biāo)點(diǎn)是以圖片左上角為基準(zhǔn)的。具體的水印大小和位置可以自行調(diào)整,不過(guò)調(diào)錯(cuò),有可能打不上水印噢。

        # -*- coding: utf-8 -*-
        # @Author: AI悅創(chuàng)
        # @Date: 2021-10-02 10:26:52
        # @Last Modified by: aiyc
        # @Last Modified time: 2021-10-04 20:15:13
        import cv2
        import numpy
        from PIL import Image, ImageDraw, ImageFont
        import os

        class WaterMark(object):
        def __init__(self, OperationFilename=".", output_dir="watermark", textSize=10, watermarkText="水印", textColor="#ffffff", system=False, winfontfile=r"C:\Windows\Fonts\STZHONGS.ttf", macfontfile="/System/Library/Fonts/PingFang.ttc"):
        self.OperationFilename = OperationFilename
        self.output_dir = output_dir
        self.textSize = textSize
        self.watermarkText = watermarkText
        self.textColor = textColor
        self.system = system
        self.winfontfile = winfontfile
        self.macfontfile = macfontfile

        def mkdirs(self):
        if not os.path.exists(self.output_dir):
        os.makedirs(self.output_dir)
        print(f"文件夾 {self.output_dir} 已經(jīng)自動(dòng)為你創(chuàng)建,圖片將保存到:{self.output_dir}")
        else:
        print(f"文件夾 {self.output_dir} 已經(jīng)存在,圖片將保存到:{self.output_dir}")



        def system_font(self):
        if not self.system:
        return ImageFont.truetype(self.textSize, encoding="utf-8")
        if self.system.upper() == "MAC":
        # FontFilePath = "/System/Library/Fonts/PingFang.ttc"
        return ImageFont.truetype(font=self.macfontfile, size=self.textSize, encoding="utf-8")
        elif self.system.upper() == "WINDOWS":
        # FontFilePath = r"C:\Windows\Fonts\STZHONGS.ttf"
        return ImageFont.truetype(font=self.winfontfile, size=self.textSize, encoding="utf-8")

        def parsepath(self):
        path_lst = []
        # a = os.walk("tips_3/")
        root, dirs, files = next(os.walk(self.OperationFilename))
        # root, dirs, files = next(os.walk("tips_3/"))
        # print(list(a))
        for item in files:
        file_path = os.path.join(root, item)
        # self.process_file(file_path)
        path_lst.append(file_path)
        return path_lst

        def process_file(self, file_path):
        img = cv2.imread(file_path)
        image_shape = img.shape
        height = image_shape[0]
        width = image_shape[1]
        # print(img.size)
        if (isinstance(img, numpy.ndarray)):
        img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
        draw = ImageDraw.Draw(img)
        fontStyle = self.system_font()
        # 繪制文本
        # textColor = (168, 121, 103)
        draw.text((width/2, height-30), self.watermarkText, self.textColor, font=fontStyle)
        # draw.text((width/2, height-30), self.watermarkText, fill=self.textColor, font=fontStyle)
        # 轉(zhuǎn)換回 OpenCV 類型
        img2 = cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)
        # 保存圖片
        file_name = file_path.split("/")[-1]
        cv2.imwrite(os.path.join(self.output_dir, file_name), img2)
        print(f"proceed {file_path}")

        def main(self):
        self.mkdirs()
        path_lst = self.parsepath()
        # print(path_lst)
        for path in path_lst:
        self.process_file(path)


        if __name__ == '__main__':
        run = WaterMark(
        OperationFilename="tips_3/",
        output_dir="image_watermark",
        textSize=10,
        watermarkText="@黃家寶|www.aiyc.top",
        textColor="gray",
        system="Windows",
        winfontfile="JiZiJingDianKaiTiJianFan-.ttf")
        run.main()

        代碼執(zhí)行完后,可以去 image_watermark 這個(gè)文件夾中查看圖片,可以看到這里的所有圖片都已經(jīng)被打上了文字水印。

        替換說(shuō)明:

        1. 文字水印的位置,以圖片左上角為原點(diǎn);
        2. 想要處理的圖片文件夾名稱
        3. 處理完后保存結(jié)果的文件夾名稱,放心這個(gè)會(huì)自動(dòng)創(chuàng)建
        4. 水印字體大小
        5. 文字水印的內(nèi)容
        6. 文字水印的顏色,支持顏色單詞、RGB、十六進(jìn)制顏色
        7. 選擇你的操作系統(tǒng)和字體路徑,字體路徑不寫也可以,添加這個(gè)接口主要是為了方便修改自己下載的字體路徑。

        代碼連接:https://github.com/AndersonHJB/AIYC_DATA/tree/main/04-批量搞圖,秀翻全場(chǎng)/1.%20批量給照片加水印


        AI悅創(chuàng)·推出輔導(dǎo)班啦,包括「Python 語(yǔ)言輔導(dǎo)班、C++輔導(dǎo)班、算法/數(shù)據(jù)結(jié)構(gòu)輔導(dǎo)班、少兒編程、pygame 游戲開發(fā)」,全部都是一對(duì)一教學(xué):一對(duì)一輔導(dǎo) + 一對(duì)一答疑 + 布置作業(yè) + 項(xiàng)目實(shí)踐等。QQ、微信在線,隨時(shí)響應(yīng)!V:Jiabcdefh

        作者:AI悅創(chuàng)
        排版:AI悅創(chuàng)





        黃家寶丨AI悅創(chuàng)

        隱形字

        攝影公眾號(hào)「悅創(chuàng)攝影研習(xí)社」


        在這里分享自己的一些經(jīng)驗(yàn)、想法和見解。


        長(zhǎng)按識(shí)別二維碼關(guān)注




        好文和朋友一起看~
        瀏覽 54
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日韩动态图 | 日逼AⅤ | 在线欧美日韩 | 91丝袜呻吟高潮美腿白嫩校花 | 免费的黄色视频 | 91在线无码精品秘 国产血腥 | 性生交大片免费看3p | 逼逼影院 | 国产精品三级一区二区 | 99视频免费观看 |