【python】PIL 批量绘制图片矩形框工具

工具采用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])))

时间: 2024-10-15 16:10:26

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

Python PIL创建文字图片

PIL库中包含了很多模块,恰当地利用这些模块可以做许多图像处理方面的工作. 下面是我用来生成字母或字符串测试图片而写的类及测试代码. 主要用到的模块: PIL.Image,PIL.ImageDraw,PIL.ImageFont PIL.Image用来生成一个空的图片,ImageDraw用来在空图片上画图及写字符,ImageFont则是创建需要使用到的字体 #-*- coding:gb2312 -*- from PIL import Image,ImageDraw,ImageFont,ImageO

利用python BaseHTTPServer 开发的图片浏览小工具

最近从网上爬了点图片,为了方便浏览就写了这么个小工具.直接上码,解释偏少,代码没有优化,实现比较简略.仅作记录之用. 1.httpd.py 1 # encoding: UTF-8 2 #-*-coding:utf-8-*- 3 import BaseHTTPServer 4 import config 5 import urllib 6 from CreatHtml import CreateHtmlClass 7 import os 8 9 #登录页面代码,做个简单的访问权限控制 10 log

python之批量使图片水平翻转

from PIL import Image import os import os.path rootdir = r'D:\用户目录\我的图片\From Yun\背景图\背景图' # 指明被遍历的文件夹 for parent, dirnames, filenames in os.walk(rootdir): for filename in filenames: print('parent is :' + parent) print('filename is :' + filename) curr

Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整(原理:底层SurfaceView+上层绘制ImageView)

Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整实现(原理:底层SurfaceView+上层绘制ImageView) 分类: Android开发 Android UI2013-05-23 15:04 1600人阅读 评论(1) 收藏 举报 目录(?)[+] http://blog.csdn.net/yanzi1225627/article/details/8580034 最近一直在审视以前做过的东西,关于android摄像头预览,预览界面上呈现矩形框,在

Python 批量修改图片格式和尺寸

公司的一个项目要求把所有4096x4096的图片全部转化成2048x2048的图片,这种批量转换图片大小的软件网上很多,我的同事原来使用的美图看看的批量转换,但是稍微有点麻烦,每次还需要指定要转换的图片的输入路径和输出路径,而且每次都只能处理一个文件夹,很繁琐,于是我想到了万能的Python,然后写了一个脚本来批量处理图片,同一个根目录下的所有文件夹的子文件等的图片全部会处理掉. 代码中还加入了很多的异常捕获机制和提示,希望对大家有帮助. 备注: 1.导入了PIL库,是处理图片用的,很强大: 2

图片切碎片脚本 python PIL库实践

python PIL库实践运用,对图像进行切碎片操作. 原图如图一 图一 我们想要的是图片的不同部分,比如图二中1.2.3.4每一个分区单独的碎片, 图二 做法是做出4张跟原图大小一样的碎片模版图,白底,想要的区域涂黑(非纯白)即可.1区域的碎片模板图如图三所示: 图三 脚本处理图片的方法:先找出碎片模版中的非白区域(可以不规则),然后将原图中这个区域内的所有像素点的颜色都放到新的一张跟原图像素大小一样的新图上,新图的其余位置都设置成透明(可以根据自己的不同需求进行不同的调整). 1碎片模版得到

Python批量修改图片格式和尺寸

Python批量修改图片格式和尺寸 备注: 1.导入了PIL库,是处理图片用的,很强大; 2.导入了的win32库,是判断隐藏文件用的,我们的项目需要删除隐藏文件,不需要的可以直接找到删除. 3.导入send2trash库,是把删除的文件放进垃圾箱,而不是永久删除,这个我只是防止删除有用的文件而搞得,有点严谨了是吧,不需要的可以删掉啊. 4.我这个脚本是Python2.7编写的,但是在处理中文编码的时候非常恶心,尽管最后被我解决了,这个解决的方法,我随后会再单独写一篇,但是此刻我是建议大家不要用

fabric --- Python中的批量远程管理和部署工具

Fabric是Python中一个非常强大的批量远程管理和部署工具,常用于在多个远程PC上批量执行SSH任务. 常见的使用方法大概总结如下: 1, 首先,要将批量执行的任务写入到一个fabfile.py中, # -*- coding:utf-8 -*- from fabric.api import run, local, roles, env, cd env.hosts=[ '192.168.1.110', '192.168.1.111', '192.168.1.112' ] env.user="

RGB值转化图片(python PIL)

今天看到一道misc的题目,得到一RGB值的txt文件,需解决RGB值转图片.具体题目:here 由于第一次碰到这个类型的题目,做一下记录,在这里我采用的是python 的PIL图像库 具体思路: 1.首先我们要先确定图片的size,既宽度高度 通过txt文件行数(61366=2*61*503,因为最后一行是空行,所以不在计算范围内)的整数分解 可以得到以下几个不同的size:503*122,1006*61,30683*2(x,y交换一下对图片不会有很大的变化,只是横着和竖着的区别) 所以我们接