• Python高质量缩放切图,抗锯齿


    最近刚接触Python,以迅雷不及掩耳盗铃之势(只是迫不及待)应用到工作中去了
    之前用 cmd+photoshop做批量图像处理(缩放切片),在执行效率(速度)上和灵活度上有很大限制,遂转战Python(我对于大语种庞大的类库感到力不从心,喜欢用脚本语言来快速编辑、执行)
    真正开始学习Python第一天,我奋战到深夜三点,勉强完成了可以替代先前用“cmd+photoshop快捷批处理”实现的切图工具,执行效率大概是先前的10倍。
    为什么说是“勉强”,因为输出图像质量没Photoshop输出的好。
    Python图像处理用到PIL(Python Imaging Library),在resize(缩放)的时候会很大程度得降低图像可观性(给我的感觉是部分像素相对位置乱了,没有平滑缩放过渡),看下示例:
     ps_resize.jpg   pil_resize_default.jpg   
    (左:PS改变图像大小后输出,右:使用PIL的缩放im.resize(size)后输出)
    上面可以看到PIL默认缩放后输出的图像有“破损”
    今天google到园子中另一位兄弟的一篇随笔里面包含了这个高质量输出的说明

    pil_resize_filter.jpg
    PIL带ANTIALIAS滤镜缩放结果
    im.resize(size, Image.ANTIALIAS)

    从结果看,基本上可以和PS输出的相匹敌了

    速度上,比不带ANTIALIAS滤镜输出的慢了8倍左右,但还是比PS输出快,而且整个程序稳定性和灵活度比CMD+PS快捷批处理来的好。
    在这之前我一直以为是最后im.save输出导致图像质量下降的,浪费了不少时间,嗨~~

    备注此次练兵涉及的内容:

    图像分割
    >>> box = (int(left), int(top),int(right),int(bottom))
    >>> region = im.crop(box)

    图像缩放
    >>> im_resized=im.resize(size, Image.ANTIALIAS)

    类似dir的方法:glob
    >>> path="c:/test"
    >>> glob.glob(path+"/*")

    还涉及一些os操作
    os.path.basename
    os.path.isdir
    os.path.exists
    os.mkdir

  • 相关阅读:
    RabbitMQ消息队列 基本订阅/发布Demo(PHP版)
    Docker安装部署RabbitMQ
    CentOS Docker 基本操作
    new worker
    JavaScript避坑
    如何开启MySQL慢查询日志
    kinshard
    Linux shell
    Linux shell
    Linux shell
  • 原文地址:https://www.cnblogs.com/hzm112567/p/4155167.html
Copyright © 2020-2023  润新知