python工具(1) — 图片的位深度压缩

游戏开发中,为了减少图片资源的存储空间,本文介绍了使用pngquant工具结合Python脚本,将32位PNG图片压缩为8位。首先下载pngquant的.exe文件和Python的PIL库,通过Python遍历目录找到所有PNG图片,判断并处理未压缩的图片,使用pngquant参数-f、--ext .png、--quality 50-80进行质量控制和文件覆盖。
摘要由CSDN通过智能技术生成

在游戏开发项目中,图片资源是最多的、占用空间也是最大的,因此我们需要降低图片的占用空间,我们用开源的软件pngquant来实现将32bit图片压缩为8bit的图片,关于pngquant,请戳:pngquant官网 , 我们只需要下载它的.exe文件就可以。


接下来是去python官网下载PIL(Python Image Library),因为我们需要它来检测png图片的格式。

准备好这些后,就可以写一个python脚本来实现了:


import os
import os.path
import Image

# Please reset the root directory Path !
ImageFilePath = "E:\Resources"

def getFilesAbsolutelyPath(ImageFilePath):
    currentfiles = os.listdir(ImageFilePath)
    filesVector = []
    for file_name in currentfiles:
        fullPath = os.path.join(ImageFilePath, file_name)
        if os.path.isdir(fullPath):
            newfiles = getFilesAbsolutelyPath(fullPath)
            filesVector.extend(newfiles)
        else:
            filesVector.appe
Python 编程语言提供多种库和工具用于处理和操作图像数据,其中 `PIL` (Python Imaging Library) 和它的更新版本 `Pillow` 非常适合处理图像,并且能够帮助压缩图片体积。 ### 使用 Pillow 库压缩图片体积 #### 安装 Pillow 如果你还没有安装 Pillow,可以使用 pip 来安装: ```bash pip install pillow ``` #### 缩小图片大小并降低分辨率 使用 PIL 的 Image 对象,你可以调整图像尺寸和分辨率来减小文件大小,例如缩小宽度和高度或设置最大分辨率。 ```python from PIL import Image def compress_image(input_path, output_path, width=800, height=600): # 打开图片 with Image.open(input_path) as im: # 调整图片尺寸到指定宽度和高度 resized_im = im.resize((width, height), Image.ANTIALIAS) # 保存图片 resized_im.save(output_path) # 使用函数压缩图片 compress_image('path_to_input_image.jpg', 'path_to_output_compressed_image.jpg') ``` #### JPEG 图片质量调整 对于JPEG图片,还可以通过调整`quality`参数来改变图像的质量和文件大小之间的平衡: ```python from PIL import Image def compress_jpeg(input_path, output_path, quality=75): # 打开图片 image = Image.open(input_path) # 创建一个新的内存文件用于写入压缩后的图片 img_bytes = io.BytesIO() # 将图片保存到内存文件中,同时可以调整质量 image.save(img_bytes, format="JPEG", optimize=True, quality=quality) # 从内存文件读取图片数据,然后将其写入新的文件路径 img_bytes.seek(0) with open(output_path, "wb") as out_file: out_file.write(img_bytes.read()) # 使用函数压缩JPEG图片 compress_jpeg('path_to_input_jpeg_image.jpg', 'path_to_output_compressed_jpeg_image.jpg', quality=75) ``` #### 相关问题: 1. **如何选择合适的宽度和高度进行图片压缩?** 这通常取决于原始图片的实际大小以及最终想要达到的文件大小。一般来说,减少宽度和高度会减少图片的像素数,从而节省空间。但是,这需要考虑是否保持原始图片的比例和清晰度。 2. **如何在不影响图片质量的情况下尽可能提高压缩效果?** 对于JPEG图片,尝试提高`quality`参数可能会得到较小的文件大小,但如果值过高,则可能对图片质量有负面影响。建议先测试几个不同的`quality`值,找到最佳的平衡点。 3. **对于非JPEG图片格式(如PNG、BMP等),应该如何压缩其体积?** 对于非JPEG格式的图片,如果它们不需要透明度或其他特定的视觉效果支持,也可以采用上述方法来调整大小。然而,某些格式(如PNG)默认就支持无损压缩,此时可能仅能通过减少颜色深度或调整透明度来压缩文件大小。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值