【Python】批量直接修改图片存储大小脚本


     对图片的处理有的情况下是对存储大小而非纵横的“width&height”有要求,这种对图片文件磁盘存储大小修改的工作也往往是批量的。借助Python通过“PythonMagick”库(参考:http://blog.csdn.net/sweeper_freedoman/article/details/52994690)可以实现需求。脚本简单如下。

# !/usr/bin/python
# -*- coding: utf-8 -*-
"""
author      : 蛙鳜鸡鹳狸猿
create_time : 2016年 11月 01日 星期二 17:38:06 CST
program     : *_* script of resizing image *_*
"""


import sys
import PythonMagick


class ManImage:
    """
    Manipulate Image Object
    """
    def __init__(self, i_file, o_dire):
        """
        init args
        :param i_file: (str) input image file (eg: "/home/img.jpg")
        :param o_dire: (str) output image directory (eg: "/home/")
        """
        self.i_file = i_file
        self.o_dire = o_dire

    def __str__(self):
        traceback = "Executing under {0.argv[0]} of {1.i_file} into {2.o_dire}......".format(sys, self, self)
        return traceback

    def playimage(self, rs):
        """
        resize image file
        :param rs: (int) set rs = 400 ~= 100KB output under my test
        :return: resized PNG image file
        """
        image = PythonMagick.Image(self.i_file)
        try:
            image.resize(str(rs))
            image.monochrome(True)
            image.magick("PNG")
            image.write(self.o_dire + self.i_file.split('/')[-1].split('.')[0] + '.png')
            print('"{0.i_file}" play OK......'.format(self))
        except Exception, e:
            print(str(e))


     以上代码写入一个“class_image.py”文件,下面是调取的简单示例。

# !/usr/bin/python
# -*- coding: utf-8 -*-
# te_author    : 蛙鳜鸡鹳狸猿
# create_time  : 2016年 11月 01日 星期二 17:38:06 CST
# NOTICE       : *_* script of resizing image to set*_*


import os
import sys
import class_image


i_dire = sys.argv[1]
o_dire = sys.argv[2]
rs = sys.argv[3]


for i_file in os.listdir(i_dire):
    class_image.ManImage(i_file=i_dire + i_file, o_dire=o_dire).playimage(rs=rs)


     即在命令行分别传入读入目录、输出目录以及图片大小三个参数,操作起来方便简捷。图片可以直接从pdf文件里面逐页转换出来并同时修改图片大小,参考:http://blog.csdn.net/sweeper_freedoman/article/details/53000145。如果已经安装使用“ImageMagick”,也可以通过Python调用处理图片,参考http://blog.csdn.net/sweeper_freedoman/article/details/69789307。






你可能感兴趣的:(#,Python,Image,Handler)