Python 基于Rawpy 索尼A73 RAW文件转为JPG功能实现
生活随笔
收集整理的這篇文章主要介紹了
Python 基于Rawpy 索尼A73 RAW文件转为JPG功能实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python課程作業,因為不限方向,而且自己平時不會保存jpg文件,所以寫了這個自用的程序,可以實現RAW文件向JPG文件的批量轉換。
首先在程序中導入所需要的庫,例如:Tkinter、os、rawpy、imageio、numpy和Pillow的Image和ImageTk模塊。
然后定義一個convert_image()函數,它接受兩個參數:一個輸入文件路徑和一個輸出文件路徑。函數使用rawpy庫讀取RAW格式圖像文件,將其轉換為numpy數組,然后將numpy數組轉換為PIL Image對象。接著,對圖像進行一些處理,如銳化和亮度和對比度增強。最后,函數將PIL Image對象轉換為numpy數組,并將其保存為JPEG格式圖像文件。
然后定義一個convert_folder()函數,它接受一個文件夾路徑作為參數。函數使用os模塊遍歷文件夾中的所有.arw文件,并調用convert_image()函數將它們轉換為JPEG格式圖像。
然后創建一個Tkinter窗口,并設置窗口的標題和大小。在倉庫中創建一個文件選擇按鈕,用于選擇要轉換的文件夾。
再創建一個用于顯示轉換后圖像的面板,由于原圖的比例是3:2,因此窗口的尺寸為600×400。
創建一個轉換按鈕,并綁定它的事件,調用convert_folder()函數并傳入選擇的文件夾路徑。最后運行窗口,并且等待用戶進行操作。
import tkinter as tk from tkinter import filedialog import os import rawpy import imageio import numpy as np from PIL import Image, ImageEnhance, ImageFilter, ImageTkdef convert_image(file_path, output_path):# 使用rawpy打開文件并轉換為numpy數組with rawpy.imread(file_path) as raw:raw_image = raw.postprocess()# 轉換numpy數組為PIL Image對象pil_image = Image.fromarray(raw_image)# 對圖像進行銳化pil_image = pil_image.filter(ImageFilter.SHARPEN)# 對圖像進行亮度和對比度增強enhancer = ImageEnhance.Brightness(pil_image)pil_image = enhancer.enhance(1.0)enhancer = ImageEnhance.Contrast(pil_image)pil_image = enhancer.enhance(1.2)# 轉換PIL Image對象為numpy數組np_image = np.asarray(pil_image)# 將numpy數組轉換為jpg格式并保存到用戶選擇的輸出路徑和文件名if output_path:imageio.imwrite(output_path, np_image, format='jpg')# 在窗口中顯示轉換后的圖像img = Image.open(output_path)img = img.resize((600, 400))img = ImageTk.PhotoImage(img)panel.configure(image=img)panel.image = imgdef convert_folder(folder_path):# 循環遍歷文件夾中的所有.arw文件,并進行轉換for file_name in os.listdir(folder_path):# 如果文件擴展名不是".arw",則跳過if not file_name.lower().endswith('.arw'):continue# 構造完整的文件路徑file_path = os.path.join(folder_path, file_name)# 構造輸出文件路徑和文件名output_path = os.path.splitext(file_path)[0] + '.jpg'# 調用轉換函數convert_image(file_path, output_path)# 創建窗口 window = tk.Tk() window.title("ARW Converter") window.geometry("500x500")# 創建文件選擇按鈕 button = tk.Button(window, text="選擇文件夾", command=lambda: convert_folder(filedialog.askdirectory())) button.pack()# 創建顯示圖像的面板 panel = tk.Label(window) panel.pack()# 創建轉換按鈕 convert_button = tk.Button(window, text="轉換") convert_button.pack()# 綁定轉換按鈕事件,調用convert_folder函數 convert_button.config(command=lambda: convert_folder(filedialog.askdirectory()))# 運行窗口 window.mainloop()總結
以上是生活随笔為你收集整理的Python 基于Rawpy 索尼A73 RAW文件转为JPG功能实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人间炼狱,人性在哪儿----------
- 下一篇: 小程序云开发支持公众号网页开发了