日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
用Python玩轉(zhuǎn)圖片處理,并導(dǎo)出文件列表到Excel文件-創(chuàng)新互聯(lián)

1、用Python玩轉(zhuǎn)圖片處理

class ImageUtils:
    """ 圖片處理工具 """
    def __init__(self, source_dir, target_dir):
        self.source_dir = source_dir
        self.target_dir = target_dir

    def thumbnail(self, filename, percent=0.5):
        '縮略圖'
        im = Image.open(os.path.join(self.source_dir, filename))
        w, h = im.size
        print('Original image size: %sx%s' % (w, h))
        im.thumbnail((int(w*percent), int(h*percent)))
        print('Thumbnail image to: %sx%s' % (int(w*percent), int(h*percent)))
        output = os.path.join(self.target_dir, filename.split('.')[0]+'-thumbnail.jpg')
        im.save(output, 'jpeg')

    def resize(self, filename, horizontal_ratio=0.5, vertical_ratio=0.5):
        '調(diào)整大小'
        im = Image.open(os.path.join(self.source_dir, filename))
        w, h = im.size
        print('Original image size: %sx%s' % (w, h))
        im_size = im.resize((int(w*horizontal_ratio), int(h*vertical_ratio)))
        print('Resize image to: %sx%s' % (int(w*horizontal_ratio), int(h*vertical_ratio)))
        output = os.path.join(self.target_dir, filename.split('.')[0]+'-resize.jpg')
        im_size.save(output, 'jpeg')

    def enhance(self, filename, enhance_ratio=1.3):
        '圖片對比度增強(qiáng)'
        im = Image.open(os.path.join(self.source_dir, filename))
        enh = ImageEnhance.Contrast(im)
        print(f'圖像對比度增強(qiáng): {enhance_ratio}倍')
        output = os.path.join(self.target_dir, filename.split('.')[0]+'-enhance.jpg')
        enh.enhance(enhance_ratio).save(output, 'jpeg')

    def region(self, filename, snap=(0.1, 0.1, 0.9, 0.9)):
        '截取一塊區(qū)域'
        im = Image.open(os.path.join(self.source_dir, filename))
        w, h = im.size
        box = (int(w*snap[0]), int(h*snap[1]), int(w*snap[2]), int(h*snap[3]))
        print(f'圖像截取區(qū)域: {box}')
        region = im.crop(box)
        output = os.path.join(self.target_dir, filename.split('.')[0]+'-region.jpg')
        region.save(output, 'jpeg')

    def rotate(self, filename, angle=0):
        '旋轉(zhuǎn)圖片,翻轉(zhuǎn)'
        im = Image.open(os.path.join(self.source_dir, filename))
        print(f'圖像旋轉(zhuǎn): {angle}°')
        output = os.path.join(self.target_dir, filename.split('.')[0]+'-rotate.jpg')
        im.rotate(angle).save(output, 'jpeg')

    def flip(self, filename, horizontal=False, vertical=False):
        '翻轉(zhuǎn)'
        im = Image.open(os.path.join(self.source_dir, filename))
        if horizontal:
            print('圖像水平翻轉(zhuǎn)')
            im = im.transpose(Image.FLIP_LEFT_RIGHT)
        if vertical:
            print('圖像上下翻轉(zhuǎn)')
            im = im.transpose(Image.FLIP_TOP_BOTTOM)
        output = os.path.join(self.target_dir, filename.split('.')[0]+'-flip.jpg')
        im.save(output, 'jpeg')

    def add_logo(self, filename, logo_file):
        '添加水印'
        im_logo = Image.open(os.path.join(self.source_dir, logo_file))
        logo_width, logo_height = im_logo.size
        im_target = Image.open(os.path.join(self.source_dir, filename))
        target_width, target_height = im_target.size
        im_copy = im_target.copy()
        print('圖像添加水印')
        im_copy.paste(im_logo, (target_width-logo_width, target_height-logo_height), im_logo)
        output = os.path.join(self.target_dir, filename.split('.')[0]+'-add_logo.jpg')
        im_copy.save(output, 'jpeg')

    def new_image(self, text='Text'):
        '創(chuàng)建新圖片'
        im_new = Image.new('RGBA', (400, 400), 'white')
        print('創(chuàng)建新圖片')
        pic = ImageDraw.Draw(im_new)
        print('圖片添加文字')
        pic.text((50, 50), text, fill='blue')
        output = os.path.join(self.target_dir, 'new_image.png')
        im_new.save(output)

    def msyh_font(self, text='文字'):
        '設(shè)置字體'
        im_new = Image.new('RGBA', (400, 400), 'white')
        pic = ImageDraw.Draw(im_new)
        fonts_path = r'D:\VSCode\xuan_demo_v0302\fonts\msyh.ttf'
        msyh = ImageFont.truetype(fonts_path, 40)
        print('文字格式為微軟雅黑')
        pic.text((50, 50), text, fill='blue', font=msyh)
        output = os.path.join(self.target_dir, 'new_image_msyh.png')
        im_new.save(output)

2、導(dǎo)出文件列表到Excel文件

class ImageSystem:
    """ 圖片列表生成excel文件系統(tǒng)"""
    def __init__(self, dirname):
        self.dirpath = dirname

    def listfile(self, img_type='.jpg'):
        '獲取指定路徑下所有的圖片文件, 返回列表'
        img_File_List = os.listdir(self.dirpath)  # 圖片列表
        image_list = []
        for filename in img_File_List:
            filepath = os.path.join(self.dirpath, filename)  # 圖片的絕對路徑
            if os.path.isdir(filepath):
                self.listfile(filepath)
                print(filepath)
            else:
                if os.path.isfile(filepath) and filename.lower().endswith(img_type):
                    print(os.path.join(self.dirpath, filename))
                    image_list.append(os.path.join(self.dirpath, filename))
        return image_list

    def xlsx_create(self, image_list, filename='Workbook.xlsx'):
        '創(chuàng)建excel表格'
        wb = Workbook()
        ws = wb.active
        ws['A1'] = '文件名:'
        for s in image_list:
            ws.append([s, self.get_FileSize(s)])
        ws.append([datetime.datetime.now()])
        output = os.path.join(r'D:\VSCode\xuan_demo_v0302\test', filename)
        print('創(chuàng)建excel表格')
        wb.save(output)

    def get_FileSize(self, filename):
        '獲取文件的大小,結(jié)果保留兩位小數(shù),單位為kb'
        fsize = os.path.getsize(filename)
        fsize = fsize/float(1024)
        return f'{round(fsize, 2)} kb'

3、運(yùn)行

def main():
    source_dir = r'D:\VSCode\xuan_demo_v0302\image'
    target_dir = r'D:\VSCode\xuan_demo_v0302\test'
    test_image = ImageUtils(source_dir, target_dir)
    test_image.thumbnail('scenery.jpg', 0.9)
    test_image.resize('scenery.jpg', 0.9, 0.5)
    test_image.enhance('scenery.jpg', 1.5)
    test_image.region('scenery.jpg', snap=(0.2, 0.2, 0.55, 0.5555))
    test_image.rotate('scenery.jpg', angle=10)
    test_image.flip('scenery.jpg', horizontal=True, vertical=True)
    test_image.add_logo('scenery.jpg', 'logo.png')
    test_image.new_image()
    test_image.msyh_font()
    image_file = ImageSystem(source_dir)
    image_list = image_file.listfile()
    image_file.xlsx_create(image_list, 'image_list.xlsx')

if __name__ == "__main__":
    main()

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

在邢臺等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、成都做網(wǎng)站 網(wǎng)站設(shè)計制作按需定制設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,邢臺網(wǎng)站建設(shè)費(fèi)用合理。
文章標(biāo)題:用Python玩轉(zhuǎn)圖片處理,并導(dǎo)出文件列表到Excel文件-創(chuàng)新互聯(lián)
文章出自:http://www.dlmjj.cn/article/jcpji.html