日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【小工具】用PIL算法库制作出图片合成工具

發布時間:2024/1/18 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【小工具】用PIL算法库制作出图片合成工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

喜大普奔,之前寫的爬歌工具,閱讀超過10W,同時在線使用人數超過100人。。。

在眾多同事及好友的邀請下,繼續出爐了這個圖片合成的腳本工具。

實現了分辨率、處理目錄、批量處理參數的自定義,不同大小圖片九宮格1秒合成!!

使用了這三個庫

定義了兩個函數,第一個是收集目錄下圖片的集合

第二個函數是將收集的圖片進行大小調整,使長寬一致后可以粘合在一塊。

【以下是成品展覽:】

--==--==--

【善于自定義的可以取源碼,直接拿來即用,1秒合成則取文章底部打包好的工具】

# -*- coding:utf-8 -*-import os import timefrom PIL import Image# global Image_path, Image_size, Image_row, Image_column, Image_format, Image_save_path global another_pathImage_path = r'E:\待處理圖片\\' # 圖片集地址 Image_format = ['.jpg', '.JPG'] # 預設圖片的格式 Image_size = 256 # 每張圖片大小,最終影響的是分辨率 256*256 Image_row = 3 # 圖片間隔,也就是合并成一張圖后有幾行 Image_column = 3 # 圖片間隔,也就是合并成一張圖后有幾列 Image_save_path = 'E:\\待處理圖片\\final.png' # 最終形成的圖片while 1:is_exist = input(r'①請確認電腦是否已經有E:\待處理圖片 或替換了路徑,是/否: ')another_path = Noneif is_exist.strip() == '是':print(' 恭喜!路徑OK.')breakelse:print(' ~~~您可以替換路徑,替換后需確認答復“是”~~~')another_path = input(r' 請輸入您的正確圖片地址,必要時,路徑中每個文件夾都以\\隔開: ')if not another_path:print('您必須輸入新路徑的地址@huzk')another_path = Falseif '\\' in another_path[-1]: # 處理路徑未以\結尾的異常Image_path = another_pathelse:Image_path = another_path + '\\'Image_save_path = Image_path + 'final.png' # 圖片目錄變更,應同時修改存儲的絕對路徑need_size = input('②您是否需要更改成更高分辨率,如有請直接輸入,輸入666即表示為666*666的分辨率[按Enter直接跳過]. ') if need_size:Image_size = int(need_size.strip())print(' 切換分辨率成功~~~')need_row = input('③請輸入幾行,合成圖片默認三行[無更改,則按Enter直接跳過] ') need_column = input('④幾列,合成圖片默認三列[無更改,則按Enter直接跳過] ') if need_row:Image_row = int(need_row.strip()) if need_column:Image_column = int(need_column.strip())update_line = [] update_line.append(Image_path) if another_path is not None else print(' ?沒有變更路徑') update_line.append(Image_size) if need_size else print(' ?沒有變更分辨率(固定高寬)') update_line.append(Image_row) if need_row else print(' ?沒有變更圖片行數') update_line.append(Image_column) if need_column else print(' ?沒有變更圖片列數')print('\n\n 全部配置已更新:' + str(update_line)) if len(update_line) != 0 else print(' 使用的是默認配置')def reconfirm():# 獲取圖片集地址下的所有圖片名稱image_names = [name for name in os.listdir(Image_path) for item in Image_format ifos.path.splitext(name)[1] == item]# 簡單的對于參數的設定和實際圖片集的大小進行數量判斷if len(image_names) != Image_row * Image_column:print('Warn!!!Pictures nums appear some problems.') # 圖片數量上出現問題,請重置Image_row和Image_columnraise ValueError('\n!合成圖片的參數和要求的數量不能匹配!\n')else:return image_names# 定義圖像拼接函數 def New_Image(name):to_image = Image.new('RGB', (Image_column * Image_size, Image_row * Image_size)) # 定義的新圖# 循環遍歷,把每張圖片按順序黏貼到對應位置上for y in range(1, Image_row + 1):for x in range(1, Image_column + 1):from_image = Image.open(Image_path + name[Image_column * (y - 1) + x - 1]).resize((Image_size, Image_size), Image.Resampling.LANCZOS)to_image.paste(from_image, ((x - 1) * Image_size, (y - 1) * Image_size))return to_image.save(Image_save_path) # 保存此圖if __name__ == '__main__':# print(changes_attr())names = reconfirm()if names:New_Image(names) # 運行看看else:print('圖片數量或者名稱獲取出錯, 須符合預設格式jpg...')# New_Image()print('~~~\n運行完成,三秒后自動關閉窗口. ')for i in range(3)[::-1]:print(f'窗口關閉倒計時: {i + 1} 秒!')time.sleep(1)

筆者使用的是python3,如果電腦編譯環境不同,請直接取工具:

Tips:合成圖片請在合理數字范圍內命名,或者按名稱順序創建對應待合成圖片

目前僅支持windows環境使用。

考慮后期付費支持國內第一圖像識別的開放API,來AI優化圖像。

https://pan.baidu.com/s/1bi1Ana0W3cmksXcmSCMlgQ?pwd=wynb

總結

以上是生活随笔為你收集整理的【小工具】用PIL算法库制作出图片合成工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。