<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
最近打算做一批日曆給親朋好友,但是從 iPhone 上匯出的照片格式是 HEIC 格式,而商家的線上製作網站不支援這種圖片格式
PS:HEIC 是蘋果採用的新的預設圖片格式,它能在不損失圖片畫質的情況下,減少圖片大小
有很多線上網站支援圖片批次轉換,但是安全隱私又沒法得到保證;如果使用 PS 等軟體去一張張轉換,浪費時間的同時效率太低
本篇文章將使用 Python 批次實現 HEIC 圖片檔案的格式轉換
首先,我們安裝 pyheif 依賴包
Linux 和 Mac OS 可以通過下面連結選擇合適的方式進行安裝
https://pypi.org/project/pyheif/
如果是 Windows,我們只能下載 whl 依賴檔案,使用 pip 命令進行安裝
下載地址:
https://www.lfd.uci.edu/~gohl...
注意:我們需要根據系統及 Python 版本選擇對應的檔案進行安裝
# 比如,本機是win10+64位元 + Python3.7 # 通過下面連結下載檔案:pyheif‑0.6.1‑cp37‑cp37m‑win_amd64.whl https://www.lfd.uci.edu/~gohlke/pythonlibs/ # 然後進行虛擬環境 # 使用pip3命令安裝whl檔案 pip3 install pyheif‑0.6.1‑cp37‑cp37m‑win_amd64.whl
然後,安裝 PIL 依賴,用於圖片處理
# 安裝依賴 pip3 install Pillow
首先,遍歷原始檔夾及子資料夾,獲取所有 HEIC 格式(不區分大小寫)的圖片
import pathlib import os def get_all_heic_imgs(): """ 獲取所有heic格式的圖片 :return: """ # heif_image_paths = glob.glob(r"{}/*.heic".format(source_path)) # 滿足條件的檔案列表 filelist = [] for root, dirnames, filenames in os.walk(source_path): for filename in filenames: # filename:檔名、root:檔案對應的目錄 # 獲取檔案字尾名 file_end = pathlib.Path(filename).suffix # 檔名(不帶字尾) file_name = pathlib.Path(filename).name.split(".")[-2] if file_end in ['.heic', '.HEIC']: # 檔案的完整目錄 # file_path = os.path.join(root, filename) filelist.append({ "filename": file_name, "filepath": os.path.join(root, filename) }) return filelist
然後,遍歷檔案列表,使用 pyheif 讀取檔案,使用PIL 轉為二進位制圖片,以 JPG 格式儲存到目標資料夾下
import pyheif from PIL import Image # 讀取檔案 img = pyheif.read(filepath) img_bytes = Image.frombytes(mode=img.mode, size=img.size, data=img.data) # 檔案儲存完整目錄 target_file_path = '{}/{}_{}.jpg'.format(target_path, filename, generate_random_num(6)) # 儲存 img_bytes.save(target_file_path, format="jpeg")
由於圖片數目很多,圖片讀取、圖片儲存都是耗時的 IO 操作,最後對程式進行改造,利用多執行緒加快圖片轉換
另外,圖片可能會存在檔名重名,最後儲存的檔名追加了一個隨機的字串
import threading def generate_random_num(count): """ 產生一段隨機的字串 :param count: :return: """ return ''.join(random.sample('abcdefghijklmnopqrstuvwxyz', count)) def convert_heic_to_jpg(file, semaphore): """ heic格式轉jpg :param files: :return: """ semaphore.acquire() ... #檔案操作 # 釋放 semaphore.release() if __name__ == '__main__': ... # 定義號誌,並行處理檔案IO semaphore = threading.BoundedSemaphore(20) for file in files: t = threading.Thread(target=convert_heic_to_jpg, args=(file, semaphore)) t.start()
通過上面的操作就可以快速將 HEIC 檔案批次轉換為 JPG 檔案,當然如果想轉為其他圖片,比如:PNG,只需要更改 PIL 儲存圖片的格式即可
到此這篇關於利用Python實現快速批次轉換HEIC檔案的文章就介紹到這了,更多相關Python轉換HEIC檔案內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45