最近公司有一个新的需求,要把代码进行瘦身,这篇博客记录下如何对图片进行压缩的。
原理:
写一个脚本,把图片文件夹'.xcassets'的所有文件遍历出来,然后使用一个第三方的算法把图片压缩后再替换回去
成果:
由于在该工程中的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')