工具采用PIL:Python Imaging Library,图像处理标准库。PIL功能非常强大,但API却非常简单易用。

安装PIL

在Debian/Ubuntu Linux下直接通过apt安装

$ sudo apt-get install python-imaging

Windows平台直接通过pip安装

pip install pillow

批量工具脚本

默认执行方式为:     
        执行脚本命令 python drawline.py  
        1.获取当前路径下的'png','jpg'文件
        2.绘制宽高占比为0.5,0.5的矩形框
        3.保存图片至当前路径下的line文件夹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# -*- coding: utf-8 -*-
from PIL import Image, ImageDraw
import os, sys
 
 
def drawLine(im, width, height):
    '''
    在图片上绘制矩形图
    :param im: 图片
    :param width: 矩形宽占比
    :param height: 矩形高占比
    :return:
    '''
    draw = ImageDraw.Draw(im)
    image_width = im.size[0]
    image_height = im.size[1]
    line_width = im.size[0] * width
    line_height = im.size[1] * height
 
    draw.line(
        ((image_width - line_width) / 2, (image_height - line_height) / 2,
         (image_width + line_width) / 2, (image_height - line_height) / 2),
        fill=128)
    draw.line(
        ((image_width - line_width) / 2, (image_height - line_height) / 2,
         (image_width - line_width) / 2, (image_height + line_height) / 2),
        fill=128)
    draw.line(
        ((image_width + line_width) / 2, (image_height - line_height) / 2,
         (image_width + line_width) / 2, (image_height + line_height) / 2),
        fill=128)
    draw.line(
        ((image_width - line_width) / 2, (image_height + line_height) / 2,
         (image_width + line_width) / 2, (image_height + line_height) / 2),
        fill=128)
    del draw
 
 
def endWith(s, *endstring):
    '''
    过滤文件扩展名
    :param s: 文件名
    :param endstring: 所需过滤的扩展名
    :return:
    '''
    array = map(s.endswith, endstring)
    if True in array:
        return True
    else:
        return False
 
 
if __name__ == '__main__':
    '''
    默认执行方式为:
        1.获取当前路径下的'png','jpg'文件
        2.绘制宽高占比为0.5,0.5的矩形框
        3.保存图片至当前路径下的line文件夹
    '''
    line_w = 0.5
    line_h = 0.5
    try:
        if sys.argv[1]:
            line_w = float(sys.argv[1])
        if sys.argv[2]:
            line_h = float(sys.argv[2])
    except IndexError:
        pass
    current_path = os.getcwd()
    save_path = os.path.join(current_path, 'line')
    file_list = os.listdir(current_path)
    for file_one in file_list:
        # endWith(file_one, '.png', '.jpg') 第二个参数后为过滤格式 以 , 分割
        if endWith(file_one, '.png', '.jpg'):
            im = Image.open(file_one)
            # drawLine(im,line_w, line_h) 后面两位参数为矩形图宽高占比
            drawLine(im, line_w, line_h)
            if not os.path.exists(save_path):
                os.mkdir(save_path)
            im.save(
                os.path.join(save_path, str(file_one.split('.')[-2]) + '_line.' + str(file_one.split('.')[-1])))

【python】PIL 批量绘制图片矩形框工具的更多相关文章

  1. 【Python】批量给图片增加水印工具

    背景 最近有一些图片需要增加水印,找了一圈也没看见比较好的工具,又不想用破解的PS,干脆自己做了一个GUI工具,有需要的同学自取 功能 支持水印预览 自定义水印文字内容 支持行楷和微软雅黑两种字体 支 ...

  2. 基于Python PIL实现简单图片格式转化器

    基于Python PIL实现简单图片格式转化器 目录 基于Python PIL实现简单图片格式转化器 1.简介 2.前期资料准备 2.1.1如何实现图片格式转换? 2.1.2如何保存需要大小的图片? ...

  3. < python PIL - 批量图像处理 - 生成自定义大小图像 >

    < python PIL - 批量图像处理 - 生成自定义大小图像 > 直接用python自带的PIL图像库,对一个文件夹下所有jpg/png的图像进行自定义像素变换 from PIL i ...

  4. c#在pictureBox控件上绘制多个矩形框及删除绘制的矩形框

    在pictureBox上每次只绘制一个矩形框,绘制下一个矩形框时上次绘制的矩形框取消,代码如链接:https://www.cnblogs.com/luxiao/p/5625196.html 在绘制矩形 ...

  5. < python PIL - 批量图像处理 - RGB图像生成灰度图像 >

    < python PIL - 批量图像处理 - RGB图像生成灰度图像 > 直接用python自带的PIL图像库,将一个文件夹下所有jpg/png的RGB图像转换成灰度/黑白图像 from ...

  6. Python,PIL压缩裁剪图片

    自己写了用来压缩 DC 照片的,批量处理整目录文件,非常方便.需要安装 PIL #!/usr/bin/env python import Image import os import os.path ...

  7. 使用Python轻松批量压缩图片

    在互联网,图片的大小对一个网站的响应速度有着明显的影响,因此在提供用户预览的时候,图片往往是使用压缩后的.如果一个网站图片较多,一张张压缩显然很浪费时间.那么接下来,我就跟大家分享一个批量压缩图片的方 ...

  8. OpenCV—Python 轮廓检测 绘出矩形框(findContours\ boundingRect\rectangle

    千万注意opencv的轮廓检测和边缘检测是两码事 本文链接:https://blog.csdn.net/wsp_1138886114/article/details/82945328 1 获取轮廓 O ...

  9. Python PIL创建文字图片

    PIL库中包含了很多模块,恰当地利用这些模块可以做许多图像处理方面的工作. 下面是我用来生成字母或字符串测试图片而写的类及测试代码. 主要用到的模块: PIL.Image,PIL.ImageDraw, ...

随机推荐

  1. 设置table距离顶部位置

    //UIEdgeInsetsMake———— UIEdgeInsets insets = {top, left, bottom, right} self.tableView.contentInset ...

  2. C++Primer 一

    1.vertor和数组的区别: 数组的长度固定.而且程序是无法知道一个给定数组的长度,数组没有获取器容量大小的size操作,也不提供puch_back操作在其中自动添加元素 2.数组定义中的类型可以示 ...

  3. Hibernate入门与简谈

    Hibernate jdbc Java Databases Connectivity, 他是提供了一组Java API来访问关系数据库的Java程序.这些Java API 可以使Java应用程序执行S ...

  4. 可拖拽的ListView

    今天研究了一下可拖拽的ListView ,当ListView的数据不能充满整个模拟器的时候,系统自带的listview上拖下拽都不好使,显得很单调, 为了实现上拖下拽时也能实现滚动的效果,这时候就需要 ...

  5. Mac下手动安装SafariDriver extension

    环境:Mac OS X Yosemite 10.10.4下, Safari 8 Step 1:第一次运行SafariDriver时,先找到WebDriver extension的安装路径,比如/Use ...

  6. JS第二天简单总结

    布尔型变量:true,flase 广泛用于真假的逻辑判断 对象:分类,对象是由一些彼此相关的属性和方法集合在一起而构成的一个数据实体: 例如,var today = new Date();中,Date ...

  7. Ubuntu系统下Xen虚拟机的基本安装方法(代码创建)

    Ubuntu上Xen安装虚拟机方法一dd一个空的磁盘sudo dd if=/dev/zero of=/home/vm1.img bs=1G count=8 下载Xen VM通用配置文件 sudo wg ...

  8. Cannot forward after response has been committed

    项目:蒙文词语检索 日期:2016-05-01 提示:Cannot forward after response has been committed 出处:request.getRequestDis ...

  9. nfs文件系统挂载错误及解决方法

    挂载nfs时出现如下错误: 原因: 没有安装nfs客户端相关 解决方法: apt-get install nfs-common 参考资料: http://askubuntu.com/questions ...

  10. void 关键字

    1. void 的字面意思为“无类型”,void*为“无类型指针”,void*可以指向任何类型的数据 2 用于数据类型封装,典型的如内存操作函数 memcpy 和 memset 的函数原型分别为: v ...