|
真的不得不感歎AI的強大 整個腳本都是AI寫的 請事先安裝PYTHON以確保腳本能夠執行 import os import sys def find_image_chunks(data, signatures): found_chunks = [] for fmt, sig in signatures.items(): index = 0 while index < len(data): idx = data.find(sig, index) if idx == -1: break if fmt == "PNG": end = data.find(b'IEND', idx) if end != -1: end += 8 # Include CRC chunk = data[idx:end] found_chunks.append((fmt, idx, chunk)) index = end continue elif fmt == "JPEG": end = data.find(b'\xff\xd9', idx) if end != -1: end += 2 chunk = data[idx:end] found_chunks.append((fmt, idx, chunk)) index = end continue index = idx + 1 return found_chunks def main(input_path): with open(input_path, "rb") as f: data = f.read() signatures = { "PNG": b"\x89PNG\r\n\x1a\n", "JPEG": b"\xff\xd8\xff", } chunks = find_image_chunks(data, signatures) output_dir = os.path.splitext(input_path)[0] + "_extracted_images" os.makedirs(output_dir, exist_ok=True) for i, (fmt, offset, chunk) in enumerate(chunks): ext = ".png" if fmt == "PNG" else ".jpg" out_path = os.path.join(output_dir, f"image_{i+1}_{offset}{ext}") with open(out_path, "wb") as out_file: out_file.write(chunk) print(f"Extracted: {out_path}") print(f"共找到 {len(chunks)} 張圖片,已儲存在資料夾: {output_dir}") if __name__ == "__main__": if len(sys.argv) != 2: print("使用方式: python extract_images.py <檔案路徑>") else: main(sys.argv[1])
把該文本儲存成.py檔 然後拖曳lfoxxx.tzw檔到PY檔就自動解壓 然後是重新壓縮
import os import tkinter as tk from tkinter import filedialog, messagebox
def repack_images_from_folder(input_folder, output_path): try: files = sorted(os.listdir(input_folder), key=lambda x: int(x.split('_')[2].split('.')[0])) with open(output_path, 'wb') as out: for fname in files: path = os.path.join(input_folder, fname) with open(path, 'rb') as f: out.write(f.read()) messagebox.showinfo("成功", f"已重新封裝為 {output_path}") except Exception as e: messagebox.showerror("錯誤", str(e))
def select_folder_and_pack(): # Get the script's root directory root_directory = os.path.dirname(os.path.realpath(__file__))
folder = filedialog.askdirectory(initialdir=root_directory, title="選擇原始圖片資料夾") if not folder: return
output_path = filedialog.asksaveasfilename( initialdir=root_directory, # Set the default directory to the script's root defaultextension=".tzw", filetypes=[("TZW 檔案", "*.tzw"), ("所有檔案", "*.*")], title="儲存封裝檔" ) if not output_path: return
repack_images_from_folder(folder, output_path)
if __name__ == "__main__": root = tk.Tk() root.title("TZW 重封裝器(保留位元)") root.geometry("320x130")
label = tk.Label(root, text="點擊選擇資料夾並重新封裝為 .tzw", font=("Arial", 12)) label.pack(pady=10)
btn = tk.Button(root, text="選擇資料夾並封裝", command=select_folder_and_pack, font=("Arial", 12)) btn.pack(pady=5)
root.mainloop()
雙擊2下 GUI介面 一看就懂操作 (但這邊有個問題 解壓縮後的圖像一定要全部都沒有錯誤才可以重壓 不然會出錯) (另外我沒測試過 請修改前把舊檔案備份 以免修改後打不開遊戲)
|