Python中的库使用之一 PIL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中的库使用之一 PIL相关的知识,希望对你有一定的参考价值。

先上代码:本文主要工给自己参考,在需要的时候直接搜索查找就行了,不想看没有实际运行例子的文档,当参考完这部分还哦未能解决问题在参考PIL的相关文档!

  1 Skip to content
  2 This repository
  3 Search
  4 Pull requests
  5 Issues
  6 Gist
  7  @mm1994uestc
  8  Unwatch 1
  9   Star 0
 10  Fork 0 mm1994uestc/PythonImageProcessing
 11  Code  Issues 0  Pull requests 0  Projects 0  Wiki  Pulse  Graphs  Settings
 12 Branch: master Find file Copy pathPythonImageProcessing/ImagePython.py
 13 61e7cd2  35 minutes ago
 14 @mm1994uestc mm1994uestc -a
 15 1 contributor
 16 RawBlameHistory     
 17 129 lines (127 sloc)  4.88 KB
 18 import Image as Im
 19 import ImageFilter as ImFilter
 20 import ImageChops as ImChops
 21 import ImageFont as ImFont
 22 import ImageDraw as ImDraw
 23 import math
 24 import sys
 25 import os
 26 
 27 print This File is for you to Transform the Original Pic into another Form!
 28 im = Im.open(/home/ubuntu-mm/Python/ImageProcess/ImageData/IEEEXtreme.png) #Read the Image
 29 w, h = im.size
 30 def RGB2Gray(image):
 31     w, h = image.size
 32     print The Wide is :,w
 33     print The Length is :,h
 34 RGB2Gray(im)
 35 def ImRoll(image, Theta):
 36     "Roll a image sideways"
 37     w, h = image.size
 38     Theta = Theta % w
 39     if Theta == 0:
 40         return image
 41     Part1 = image.crop((0, 0, Theta, h))
 42     Part2 = image.crop((Theta, 0, w, h))
 43     image.paste(Part2, (0, 0, w-Theta, h))
 44     image.paste(Part1, (w-Theta, 0, w, h))
 45     return image
 46 Param = 0.5
 47 NewSize = ((int)(w*Param), (int)(h*Param))  #Notice the size must be a integer!
 48 Scaler = Im.ANTIALIAS
 49 im_roll = ImRoll(im, 90)  #roll the pic
 50 im_resize = im.resize(NewSize, Scaler)  #resize the pic to be 25% Origin‘area
 51 im_rotate = im.rotate(45)  #rotate the pic for degree at 45
 52 print Now,The geomgraphic [email protected]() @resize() @rotate()
 53 #im.show()  #show():To output the Picture to the windows
 54 #im_roll.show()
 55 #im_resize.show()
 56 #im_rotate.show()
 57 print Now,The Filter [email protected]()
 58 im_filter = im.filter(ImFilter.DETAIL)  #filter is to change the values of pixel
 59 #im_filter.show()
 60 im_new = Im.new(L, (100,100), [0,255])
 61 #im_new.show()
 62 im2 = Im.open(/home/ubuntu-mm/Python/ImageProcess/ImageData/GitHub.png)
 63 im3 = im2.rotate(45) #Rotate the im2 with the degree at 45
 64 im_blend = Im.blend(im2, im3, 0.2)  #The im and im1 must be the same size(im_blend=im2*0.2+im3*(1-0.2))
 65 #im_blend.show()
 66 mask = Im.new(L, im2.size, [0,255])
 67 im4 = Im.composite(im2, im3 ,mask) #Composite two pic into one and filter with the mask windows.
 68 #im4.show()
 69 def ImageTransform(In):
 70     Res = pow(In,2)/255
 71     return Res
 72 print Attributes of the Image object!
 73 print im2.format,im2.mode,im2.size,im2.palette,im2.info
 74 im4.save(/home/ubuntu-mm/Python/ImageProcess/ImageData/login.png,png)
 75 im6 = im2.convert("L") #Change the pic into different Mode:@"L"@"l"@"RGB"@"CMYK"
 76 #im6.show()
 77 im7 = im2.copy() #Copy the image file to a new buffer
 78 im8 = im2.crop((0,0,80,80))
 79 #im8.show()
 80 Bands = im2.getbands() #Get The bands of the Pic
 81 print Bands
 82 for i in Bands:
 83     print i
 84 Extreme = im2.getextrema() #Get Max_values and Min_values of pic(GrayScale) 
 85 for i in Extreme:
 86     print i
 87 PixelValues = im2.getpixel((0,0)) #Get to values of the coordinate you input(0,0) 
 88 print The pixelValues of point(0,0) is:,PixelValues
 89 w, h = im2.size #Get the size of the pic
 90 mask = Im.new(L,(w,h),[0,255]) #To create a new mask
 91 list1 = im2.convert("L").histogram(mask) #To show the histogram with the statical number of the GrayScale Values where the mask is nonzero replect
 92 print list1
 93 im9 = ImChops.offset(im2 , -10, -10) #To move the pic with the offset produce a new pic
 94 #im9.show()
 95 im10 = im2.point(ImageTransform) #To transform every Pixel‘s values with func ImageTranform which defined before
 96 #im10.show() #show out the image
 97 im2.putpixel((10,10),(0,0,0)) #Location:(10,10) pixel‘s color value into (0,0,0)
 98 im2.show()
 99 im11 = im2.resize((80,80))  #To resize The picture into newsize (80,80)
100 #im11.show()
101 R,G,B = im11.split()  #To split the im11‘s three channel in to RGB linear bands
102 print R
103 im12 = im2.copy()
104 im12.thumbnail((80,60)) #To resize the Pic as the rate->Height:Width
105 #For eg:im.size()=(400,150) It‘s after im.thumbnail((40,40)) will be (40,15)
106 #im12.show()
107 Method = Im.ROTATE_90 #@[email protected][email protected][email protected]_180
108 im13 = im2.copy()
109 im13.transpose(Method) #To transform the pic as the Method show
110 #im13.show()
111 print Now,Let draw what we want!
112 Cavon1 = Im.new(RGB,(300,300),(255,255,255))
113 draw = ImDraw.Draw(Cavon1)
114 draw.arc((0,0,202,202), 0, 135, (0,255,0))
115 draw.arc((0,0,205,205), 0, 135, (255,0,0))
116 draw.arc((0,0,208,208), 0, 135, (0,0,255))
117 draw.arc((0,0,211,211), 0, 135, (255,255,0))
118 draw.arc((0,0,212,212), 0, 135, (255,0,255))
119 #Cavon2 = Im.new(‘RGB‘,(200,300),(255,255,255))
120 draw.ellipse((0,0,30,40),(0,255,0))
121 draw.ellipse((20,20,40,30),(255,125,30))
122 draw.line(((60,60),(90,60),(90,90),(60,90),(60,60)),(255,0,0))
123 draw.point((100,100),(255,0,255))
124 draw.polygon([(60,60),(90,60),(90,90),(60,90)],fill="red",outline="green")
125 #fontPath = "/usr/share/fonts/dejavu-lgc/DejaVuLGCSansCondensed-Bold.ttf"
126 #sans16 = ImFont.truetype(fontPath,16)
127 draw.text((130,80),"Hello PIL!",fill="red")
128 Cavon1.show()
129 print Image Filter!
130 im_filter1 = im2.filter(ImFilter.BLUR)
131 im_filter2 = im2.filter(ImFilter.CONTOUR)
132 im_filter3 = im2.filter(ImFilter.DETAIL)
133 im_filter4 = im2.filter(ImFilter.EDGE_ENHANCE)
134 im_filter5 = im2.filter(ImFilter.EDGE_ENHANCE_MORE)
135 im_filter6 = im2.filter(ImFilter.FIND_EDGES)
136 im_filter7 = im2.filter(ImFilter.SMOOTH)
137 im_filter8 = im2.filter(ImFilter.SHARPEN)
138 im_filter1.show()
139 im_filter2.show()
140 im_filter3.show()
141 im_filter4.show()
142 im_filter5.show()
143 im_filter6.show()
144 im_filter7.show()
145 im_filter8.show()
146 Contact GitHub API Training Shop Blog About
147 ? 2016 GitHub, Inc. Terms Privacy Security Status Help

程序里面使用的数据和图片都在我的github源码中,请参照mm1994uestc--》https://github.com/mm1994uestc/PythonImageProcessing/blob/master/ImagePython.py

PIL库的下载Python Imaging Library (PIL)--》http://www.pythonware.com/products/pil/index.htm

详细的PIL教程参照Python PIL hand--》http://effbot.org/imagingbook/pil-index.htm

也可以参考这个网站--》http://effbot.org/imagingbook/

如有错误,还请多多指教!

以上是关于Python中的库使用之一 PIL的主要内容,如果未能解决你的问题,请参考以下文章

windows开发环境下python中的PIL包如何安装

ruby 我感兴趣的库中的代码片段

python如何安装pil库

Python有啥好的库可以识别验证码

纯代码系列:Python实现验证码图片(PIL库经典用法用法,爬虫12306思路)

Python PIL模块随机生成中文验证码