zoukankan      html  css  js  c++  java
  • 使用python脚本实现iOS图片资源压缩

    最近公司有一个新的需求,要把代码进行瘦身,这篇博客记录下如何对图片进行压缩的。

    原理:
    写一个脚本,把图片文件夹'.xcassets'的所有文件遍历出来,然后使用一个第三方的算法把图片压缩后再替换回去

    成果:
    image.png

    由于在该工程中的png图片已经压缩过了,这次只压缩了jgp为后缀的图片,可以看出,还是有效果的

    代码如下:

    import os
    import tinify
    import shutil
    
    tinify.key = '5J54hg59ysAuhHFPxXB*******'
    
    source_file = '/Users/user/Desktop/Hotel.xcassets'
    dest_file = '/Users/user/Desktop/destimages'
    
    
    def getPngFileNames(source_dir):
        pngDicts = []
        for (parent, dirnames, filenames) in os.walk(source_dir):
            for filename in filenames:
                if filename.endswith('.jpg'):
                    tempDict = {}
                    tempDict['name'] = filename
                    tempDict['path'] = os.path.join(parent, filename)
                    pngDicts.append(tempDict)
    
        return pngDicts
    
    def compressImages(uncompress_images):
        for pngDict in uncompress_images:
            source = tinify.from_file(pngDict['path'])
            source.to_file(os.path.join(dest_file, pngDict['name']))
    
    def replace_file(new_path, old_path):
        pngs = getPngFileNames(source_file)
        for name in os.listdir(new_path):
            for pngDict in pngs:
                if pngDict['name'] == name:
                    shutil.copyfile(os.path.join(new_path, name), pngDict['path'])
    
    
    if __name__ == '__main__':
        replace_file(dest_file, source_file)
        # pngs = getPngFileNames(source_file)
        # compressImages(pngs)
        print('done')
    
  • 相关阅读:
    【剑指offer】一些简单题05 06
    【剑指offer】11 旋转数组的最小数字
    【剑指offer】10 斐波那契数列
    【剑指offer】 03 数组中重复的数字
    【剑指Offer】 04 二维数组中的查找
    HPCC复习部份
    软工提纲复习
    软件工程复习
    Scala
    [转]对TCP/IP网络协议的深入浅出归纳
  • 原文地址:https://www.cnblogs.com/machao/p/9807016.html
Copyright © 2011-2022 走看看