PIL库学习链接:http://blog.csdn.net/column/details/pythonpil.html?&page=1

1 #-*-coding:utf-8-*-
2 __author__ = 'Deen'
3 '''
4 题目说明:
5 将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。 类似于图中效果
6 '''
7 from PIL import Image
8 from PIL import ImageChops
9 from PIL import ImageDraw
10 from PIL import ImageFont
11
12 # im = Image.open('source\\0000.jpg')
13 # print im.getbands()
14 # print im.mode
15 # print im.size
16 # print im.size[0]
17 # print im.size[1]
18
19 '''
20 PIL使用笛卡尔像素坐标系统,坐标(0,0)位于左上角。注意:坐标值表示像素的角;位于坐标(0,0)处的像素的中心实际上位于(0.5,0.5)。
21
22 坐标经常用于二元组(x,y)。长方形则表示为四元组,前面是左上角坐标。例如,一个覆盖800x600的像素图像的长方形表示为(0,0,800,600)。
23 '''
24
25 # info 返回一个对象
26 # print im.info
27
28 '''
29 ImageChops模块
30
31 ImageChops模块包含一些算术图形操作,叫做channel operations(“chops”)。这些操作可用于诸多目的,比如图像特效,图像组合,算法绘图等等。通道操作只用于8位图像(比如“L”模式和“RGB”模式)。
32 '''
33
34 '''
35 ImageDraw模块
36
37 ImageDraw模块为image对象提供了基本的图形处理功能。例如,它可以创建新图像,注释或润饰已存在图像,为web应用实时产生各种图形。
38
39 ImageDraw模块的使用如下:
40
41 >>>from PIL import Image, ImageDraw
42
43 >>> im = Image.open('D:\\Code\\Python\\test\\img\\1.jpg')
44
45 >>>draw = ImageDraw.Draw(im)
46
47 >>>draw.line((0,0) + im.size, fill = 128)
48
49 >>>draw.line((0, im.size[1], im.size[0], 0), fill=128)
50
51 >>>im.show()
52
53 >>> deldraw
54
55 >>>im.show()
56 '''
57
58
59 # im2 = ImageChops.duplicate(im)
60 # print im2.size
61 # draw = ImageDraw.Draw(im2)
62 '''
63 draw.line((141, 15)+(141, 53), fill=(255, 0, 0))
64 draw.line((141, 15)+(123, 33), fill=(255, 0, 0))
65 draw.line((123, 33)+(150, 33), fill=(255, 0, 0), width=5)
66 '''
67 '''
68 ft = ImageFont.truetype("C:/windows/fonts/Arial.ttf", 20)
69 draw.text((30,30),u"4",font=ft,fill='red')
70 im2.show()
71 '''
72
73 def add_num(img):
74 draw = ImageDraw.Draw(img)
75 ft = ImageFont.truetype("C:/windows/fonts/Arial.ttf", 20)
76 draw.text((img.size[0]-40, 0), u'99+',font=ft, fill='red')
77 img.save('result.jpg', 'jpeg')
78
79 return 0
80
81 if __name__ == '__main__':
82 image= Image.open('source/0000.jpg')
83 add_num(image)

最新文章

  1. 配置 PHP 的 Session 存储到 Redis
  2. ubuntu系统下,gsl 库链接问题 -undefined reference to `cblas_xxx`
  3. Oracle计算时间函数(对时间的加减numtodsinterval、numtoyminterval) (转)
  4. PS网页设计教程——30个优秀的PS网页设计教程的中文翻译教程
  5. DataTable 怎样设置列宽? DataTable中已经有数据了怎样在现实的时候设置它的列宽?
  6. CentOS 7 修改时区(转)
  7. 解决Bootstrap 附加导航(Affix)的问题和使用时若干注意事项
  8. C++之EOF()
  9. [jobdu]树中两个结点的最低公共祖先
  10. MVC ViewData和ViewBag
  11. 完全跨站点跨域名单点(SSO)同步登录和注销
  12. 依赖注入及AOP简述(八)——混合请求模式 .
  13. js动态加载控件jsp页面
  14. Asp.net MVC3 中,动态添加filter
  15. vue开发环境搭建及热更新
  16. springcloud~服务注册与发现Eureka的使用
  17. flask+mod_wsgi+apache在windows上的布署
  18. [todo] 3rd
  19. activiti学习第一天
  20. sql语句查询结果排序

热门文章

  1. 搭建 Nginx 服务
  2. iptables 的使用 与 模块
  3. Note -「Mobius 反演」光速入门
  4. code-server服务端开发利器,再也不用vim装逼了!!!
  5. 五、MyBatis缓存初体验
  6. 阿里云K8S节点NotReady状态
  7. 二十七 集合!!!!!!!!set 二十八 文件
  8. [旧][Android] 消息处理机制
  9. 现在的BI软件是不是很贵?
  10. 【C# 线程】 延迟初始化