7
This commit is contained in:
1 parent
65edee3663
commit
dd3feebde5
25 files changed
+421
-18
No files matched your search
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
批量压缩 Assets/Model 下的大尺寸 PNG 贴图
|
||||
将 4096x4096 缩小到 2048x2048,并优化文件大小
|
||||
"""
|
||||
import os
|
||||
from PIL import Image
|
||||
from pathlib import Path
|
||||
|
||||
def compress_texture(filepath, max_size=2048):
|
||||
"""压缩单个贴图文件"""
|
||||
try:
|
||||
img = Image.open(filepath)
|
||||
original_size = os.path.getsize(filepath)
|
||||
|
||||
# 如果图片大于目标尺寸,缩放
|
||||
if img.width > max_size or img.height > max_size:
|
||||
img.thumbnail((max_size, max_size), Image.Resampling.LANCZOS)
|
||||
print(f" 缩放: {img.width}x{img.height}")
|
||||
|
||||
# 优化并保存
|
||||
img.save(filepath, 'PNG', optimize=True, compress_level=9)
|
||||
new_size = os.path.getsize(filepath)
|
||||
|
||||
saved_mb = (original_size - new_size) / (1024 * 1024)
|
||||
print(f" 节省: {saved_mb:.2f} MB ({original_size/(1024*1024):.2f} -> {new_size/(1024*1024):.2f} MB)")
|
||||
return saved_mb
|
||||
except Exception as e:
|
||||
print(f" 错误: {e}")
|
||||
return 0
|
||||
|
||||
def main():
|
||||
assets_path = Path("Assets/Model")
|
||||
total_saved = 0
|
||||
processed = 0
|
||||
|
||||
# 查找所有超过 10MB 的 PNG 文件
|
||||
for png_file in assets_path.rglob("*.png"):
|
||||
file_size = png_file.stat().st_size
|
||||
if file_size > 10 * 1024 * 1024: # 10 MB
|
||||
print(f"\n处理: {png_file.name}")
|
||||
saved = compress_texture(str(png_file))
|
||||
total_saved += saved
|
||||
processed += 1
|
||||
|
||||
print(f"\n完成! 处理了 {processed} 个文件,共节省 {total_saved:.2f} MB")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in new issue
Block a user