<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          深入剖析Python最強(qiáng)大圖片處理模塊---Pillow

          共 6076字,需瀏覽 13分鐘

           ·

          2021-04-14 11:00

          點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

          回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

          不堪玄鬢影,來(lái)對(duì)白頭吟。

          前言

              Pillow作為一個(gè)圖片模塊??芍^是真的簡(jiǎn)便強(qiáng)大,它的前身是PIL,后來(lái)將他取代,現(xiàn)在的pillow 可謂是一家獨(dú)大,好了,讓我們來(lái)看看他的具體用法。

              今天我們介紹pillow 常用六大模塊:

                  1.Image

                  2.ImageDraw

                  3.ImageEnhance

                  4.ImageFont

                  5.ImageGrab

                  6.ImageFilter

          一、Image

          from PIL import Imagefrom io import BytesIO#讀取一張圖片im=Image.open('2.jpg') #根據(jù)文件名讀取圖像b=BytesIO()im.save(b,'JPEG')data=b.getvalue()print(data)#獲取圖片的二進(jìn)制信息#圖片格式print('格式:',im.format)#圖片模式print('模式:',im.mode)  #L:灰度  RGB:真彩色 CMYK:出版圖像#圖像寬高print('寬高:',im.size)print('完整信息:',im.info)try:    im.verify()#檢查圖像文件的完整性except:    passfinally:    im.show() #顯示一張圖片    im.save('4.jpg','JPEG') #保存圖片

          from PIL import Imagefrom io import BytesIOimport requests#創(chuàng)建新圖片:im1=Image.new('RGBA',(400,400),'red')#從二進(jìn)制中讀取圖片res=requests.get('http://pic.sc.chinaz.com/files/pic/pic9/202003/zzpic24077.jpg').contentim2=Image.frombytes('RGB',(100,100),data=res)#只能解析純二進(jìn)制圖片#從網(wǎng)頁(yè)中讀取圖片im2=Image.open(BytesIO(res))b=BytesIO()im2.save(b,format="PNG")im2.show()
          #兩張圖片相加:im1=Image.new('RGBA',(400,400),'red')im2=Image.new('RGBA',(400,400),'blue')Image.blend(im1,im2,0.5) #兩個(gè)圖片大小一定要一樣(效果見圖4)
          #點(diǎn)操作:im1.point(lambda x:x*1.2)

          #圖片裁剪:box=(100,100,200,200)region=im.crop(box)#設(shè)置要裁剪的區(qū)域
          #圖片粘貼(合并)im1.paste(region,box)#粘貼box大小的region到原先的圖片對(duì)象中。(見圖5)

          im1=Image.new('RGB',(400,400),'red')im2=Image.new('RGBA',(400,400),'blue')
          #通道分離:r,g,b=im1.split()#分割成三個(gè)通道,此時(shí)r,g,b分別為三個(gè)圖像對(duì)象。print(r,g,b)#通道合并:im3=Image.merge("RGB",(b,g,r))#將b,r兩個(gè)通道進(jìn)行翻轉(zhuǎn)。

          #改變圖片的大小:im4=im1.resize((300,200))im4.show()

          #圖片翻轉(zhuǎn)im5=im1.transpose(Image.FLIP_LEFT_RIGHT) #左右翻轉(zhuǎn)im6=im2.transpose(Image.FLIP_TOP_BOTTOM) #上下翻轉(zhuǎn)im5.show()im6.show()

          #獲取某個(gè)像素位置的值im1.getpixel((43,23))

          #寫某個(gè)像素位置的值im1.putpixel((10,20),(255,32,43))

          #創(chuàng)建圖像縮略圖im1.thumbnail((10,20))#圖片大小為(10,20)im1.show()
          #旋轉(zhuǎn)圖像im8=im1.rotate(45) #逆時(shí)針旋轉(zhuǎn)45度im8.show()注:RGB有三個(gè)通道,RGBA有四個(gè)通道,以上圖片顯示效果都在圖6中

          #圖片模式轉(zhuǎn)換im3.convert('RGBA')modes Description 1 1位像素,黑白圖像,存成8位像素 L 8位像素,黑白 P 9位像素,使用調(diào)色板映射到任何其他模式RGB 3*8位像素,真彩RGBA4*8位像素,真彩+透明通道CMYK4*8位像素,印刷四色模式或彩色印刷模式YCbCr3*8位像素,色彩視頻格式 I 32位整型像素 F 33位浮點(diǎn)型像素

          二、ImageDraw

          這個(gè)模塊主要就是畫圖和打水印時(shí)用的,具體方法請(qǐng)看下面:

          from PIL import Image,ImageDraw#畫點(diǎn)im=Image.open('2.jpg')draw= ImageDraw.Draw(im)draw.point([100,200],fill='blue')#指定點(diǎn)的坐標(biāo)和顏色

          # 創(chuàng)建一個(gè)正方形。[x1,x2,y1,y2]或者[(x1,x2),(y1,y2)] fill代表的為顏色draw.line([100,100,100,600],fill='pink')#直線draw.line([100,100,600,100],fill='green')draw.line([600,100,600,600],'black')draw.line([100,600,600,600],'blue')


          # 弧形 [x1,x2,y1,y2] 弧度 顏色draw.arc([100,100,600,600],0,360,fill='black')draw.arc([200,100,500,600],0,360,fill='yellow')

          # 畫圓 [x1,x2,y1,y2] outline邊框顏色 fill填充顏色draw.ellipse([100,100,600,600],outline='black',fill='white')

          # 畫半圓 [x1,x2,y1,y2] 弧度 outline弦線顏色 fill填充顏色draw.chord([100,100,600,600],0,360,outline=125)draw.chord([100,100,600,600],0,90,outline=158)draw.chord([100,100,600,600],90,180,outline=99,fill='gray')


          # 扇形 [x1,x2,y1,y2] 弧度 outline弦線顏色 fill填充顏色draw.pieslice([100,100,600,600],180,210,outline=255)draw.pieslice([100,100,600,600],30,80,fill=255)


          # 多邊形draw.polygon([10,23,45,6,77,87],outline='orange')draw.polygon([10,20,30,40,50,90,70,80,90,100],fill='red')

          # 矩形draw.rectangle((200,200,500,500),outline = "white")draw.rectangle((250,300,450,400),fill = 128)

          # 文字text = 'hello world '# 顏色draw.ink = 0 + 0 * 256 + 255 * 256 * 256# 加載到圖片上draw.text([200,100],text)im.show()

          這里每個(gè)圖形基本都一覽無(wú)余,如果你的圖片像素太小的話,所繪制的圖形是不會(huì)完整顯示在上面的。


          三、ImageEnhance

          主要是設(shè)置圖片的顏色對(duì)比度亮度銳度啥的,增強(qiáng)圖像。

          from PIL import  ImageEnhance       im1=Image.open('4.jpg')   #調(diào)整圖像的顏色平衡cl=ImageEnhance.Color(im1)ce=cl.enhance(1.2)#對(duì)選擇的屬性數(shù)值增強(qiáng)1.3倍ce.show()#調(diào)整圖像的對(duì)比度ct=ImageEnhance.Contrast(im1)ch=ct.enhance(3.4)ch.show()#調(diào)整圖像的亮度br=ImageEnhance.Brightness(im1)be=br.enhance(2.2)be.show()#調(diào)整圖像的銳度sp=ImageEnhance.Sharpness(im1)se=sp.enhance(200)se.show()


          四、ImageFont

          字體模塊,主要是讀取系統(tǒng)內(nèi)字體以及給圖片添加水印效果

          from PIL import Imagefrom PIL import ImageDrawfrom PIL import ImageFontfont=ImageFont.truetype(r'C:\Windows\Fonts\simsun.ttc',size=40)im=Image.open('4.jpg')dw=ImageDraw.Draw(im)dw.text((50,60),'你好,world',fill='red',font=font)im.show()


          五、ImageGrab

          from PIL import ImageGrab im1=ImageGrab.grab((0,0,800,200)) #截取屏幕指定區(qū)域的圖像 im2=ImageGrab.grab() #不帶參數(shù)表示全屏幕截圖im1.show()im2.show()


          六、ImageFilter

          過(guò)濾圖像的效果。

          from PIL import Image, ImageFilter im = Image.open('4.jpg') # 高斯模糊 im1=im.filter(ImageFilter.GaussianBlur) im1.show()# 普通模糊 im2=im.filter(ImageFilter.BLUR) im2.show()# 邊緣增強(qiáng) im3=im.filter(ImageFilter.EDGE_ENHANCE) im3.show()# 找到邊緣 im4=im.filter(ImageFilter.FIND_EDGES) im4.show()# 浮雕 im5=im.filter(ImageFilter.EMBOSS) im5.show()# 輪廓 im6=im.filter(ImageFilter.CONTOUR) im6.show()# 銳化 im7=im.filter(ImageFilter.SHARPEN) im7.show()# 平滑 im8=im.filter(ImageFilter.SMOOTH) im8.show()#闕值平滑im9=im.filter(ImageFilter.SMOOTH_MORE) im9.show()# 細(xì)節(jié) im10=im.filter(ImageFilter.DETAIL)im10.show()

          pillow 還算是比較強(qiáng)大的一個(gè) 模塊,他可以輕松實(shí)現(xiàn)截屏 水印效果,并且還可以制作字符畫,下面請(qǐng)看:

          from PIL import Imagefrom PIL import ImageDrawfrom PIL import ImageFonttxt = 'meimei'font = ImageFont.truetype(r'C:\Windows\Fonts\simsun.ttc',9)  #9為字體大小im_path = '1.jpg'  #原圖路徑im = Image.open(im_path)width, height = im.size newImg = Image.new("RGBA",(width, height),(10,10,10))  #背景色rgb,偏黑顯示好一些x=0for i in range(0,height,9):   #需要與字體大小一致    for j in range(0,width,9): #需要與字體大小一致        a,b,c=im.getpixel((j,i)) #獲取像素        draw = ImageDraw.Draw(newImg)        draw.text( (j,i), (txt[x%(len(txt)):x%(len(txt))+3]), fill=(a,b,c),font=font)        x+=3        del drawnewImg.save('00.png','PNG')


          七、總結(jié)

          通過(guò)對(duì)Pillow的學(xué)習(xí),相信你現(xiàn)在已經(jīng)能玩轉(zhuǎn)圖片的各種騷操作了,配合詞云的話就能生成更具特色的圖片了。

          ------------------- End -------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行

          /今日留言主題/

          隨便說(shuō)一兩句吧~

          瀏覽 67
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  蜜芽欧美福利网址 - 百度 | 久久精品久久久久久久 | 玖玖视频二区 | 日日摸日日添日日躁AV | 国产精品一级无码免费 |