python练习册 每天一个小程序 第0000题

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)