好玩圖像PIL處理

来源:https://www.cnblogs.com/sun0618-/archive/2019/04/11/10687213.html
-Advertisement-
Play Games

好玩圖像PIL處理 一、PIL庫學習總結 1、PIL中的模塊 Image模塊、ImageChops模塊、ImageCrackCode模塊、ImageDraw模塊、ImageEnhance模塊、ImageFile模塊、ImageFileIO模塊、ImageFilter模塊、ImageFont模塊、Im ...


                 好玩圖像PIL處理

一、PIL庫學習總結

1、PIL中的模塊

  Image模塊、ImageChops模塊、ImageCrackCode模塊、ImageDraw模塊、ImageEnhance模塊、ImageFile模塊、ImageFileIO模塊、ImageFilter模塊、ImageFont模塊、ImageGrab模塊、ImageOps模塊、ImagePath模塊、ImageSequence模塊、ImageStat模塊、ImageTk模塊、ImageWin模塊、PSDraw模塊。最常用模塊為Image模塊、ImageFilter模塊、ImageEnhance模塊。

 

2、Image類的解釋

         Image類的圖像讀取和創建方法   

 方法 描述
Image.open(filename)         根據參數載入圖像文件      
Image.new(mode,size,color) 根據給定參數創建一個新的圖像
Image.open(StringIO.StringIO(buffer)) 從字元串中獲取圖像
Image.frombytes(mode,size,data) 根據像素點data創建圖像
Image.veify() 對圖像文件完整性進行檢查,返回異常

                                                                                                                                                                                                                          

 

 

 

 

       

           

           Image類的常用屬性      

屬性 描述
Image.format 標識圖像格式或來源,如果圖形不是從文件讀取,值為None
Image.mode 圖形的色彩模式,"L"為灰度圖像,"RGB"為真彩色圖像,"CMYK"為出版圖像
Image.size 圖像高度與寬度,單位是像素(px),返回值是二元元組(tuple)
Image.palette 調色板屬性,返回一個ImagePalette類型

                                                                                                                                                                                                                                                                                                                           

   

 

 

 

          

          Image類的序列圖像操作方法

方法 描述
Image.seek(frame) 跳轉並返回圖像中的指定幀
Image.tell() 返回當前幀的序號

 

 

     

 

 

 

         

          Image類的圖像轉換和保存方法

方法 描述
Image.save(filename,format) 將圖像保存為filename文件名,format是圖片格式
Image.convert(mode) 使用不同的參數,轉換圖像為新的模式
Image.thumbnail(size) 創建圖像的縮略圖,size是縮略圖尺寸的二元元組

                                                                                                                                                               

 

 

 

 

         

         Image類的圖像旋轉與縮放方法

方法 描述
Image.resize(size) 按size大小調整圖像,生成副本
Image.rotate(angle) 按angle角度旋轉圖像,生成副本

 

      

 

 

 

 

           Image類的圖像像素和通道處理方法

方法 描述
Image.piont(func) 根據函數func的功能對每個元素進行運算,返回圖像副本
Image.split() 提取RGB圖像的每個圖形通道,返回圖像副本
Image.merge(mode,bands) 合併通道,其中mode表示色彩,bands表示新的色彩通道
Image.blend(im1,im2,alpha)

將兩幅圖片im1和im2按照如下公式插值後生成新的圖像:

im1*(1.0-alpha)+im2*alpha

 

 

 

 

 

 

 

 

 

 

  引用方法: 

1 from PIL import Image
2 im=Image.open("D:\\我的文件\\Python\\壁紙3.jpg")
3 im.thumbnail((158,158))
4 om.save("D:\\我的文件\\Python\\壁紙5.jpg")

 

3、ImageFilter類的解釋

                 

             ImageFilter類的預定義過濾方法

方法表示 描述
ImageFilter.BLUK 圖像的模糊效果
ImageFilter.CONTOUR 圖像的輪廓效果
ImageFilter.DETAIL 圖像的細節效果
ImageFilter.EDGE_ENHANCE 圖像的邊界加強效果
ImageFilter.EDGE_ENHANCE_MORE 圖像的闊值邊界加強效果
ImageFilter.EMBOSS 圖像的浮雕效果
ImageFilter.FIND_EDGES 圖像的邊界效果
ImageFilter.SMOOTH 圖像的平滑效果
ImageFilter.SMOOTH_MORE 圖像的闊值平滑效果
ImageFilter.SHARPEN 圖像的銳化效果

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  引用方法:

1 from PIL import ImageFilter
2 im=Image.open("D:\\我的文件\\Python\\壁紙5.jpg")
3 om=im.filter(ImageFilter.CONTOUR)
4 om.save("D:\\我的文件\\Python\\壁紙2.jpg")
5 om=im.filter(ImageFilter.EMBOSS)
6 om.save("D:\\我的文件\\Python\\壁紙1.jpg")

 

4、ImageEnance類的解釋

 

     ImageEnhance類的圖像增強和濾鏡方法                                                                

             方法           描述
ImageEnhance.enhance(factor) 對選擇的屬性增強factor倍
ImageEnhance.Color(im) 調整圖像的顏色平衡
ImageEnhance.Contrast(im) 調整圖像的對比度
ImageEnhance.Brightness(im) 調整圖像的亮度
ImageEnhance.Sharpness(im) 調整圖像的銳度

 

 

 

 

 

 

 

 

 

  

  引用如下: 

1 from PIL import Image
2 from PIL import ImageEnhance
3 im=Image.open("D:\\我的文件\\Python\\壁紙4.jpg")
4 om=ImageEnhance.Contrast(im)        #調整圖像的對比度
5 om.enhance(20).save("D:\\我的文件\\Python\\壁紙7.jpg")
6 om=ImageEnhance.Sharpness(im)       #調整圖像的銳度
7 om.enhance(20).save("D:\\我的文件\\Python\\壁紙6.jpg")

 

 

二、圖像處理的實例

1、生成縮略圖 

1 from PIL import Image
2 im=Image.open("D:\\我的文件\\Python\\壁紙5.jpg")
3 im.thumbnail((58,58))

 

 顯示如下:                 

        

  

1 from PIL import Image
2 im=Image.open("D:\\我的文件\\Python\\壁紙3.jpg")
3 im.thumbnail((158,158))
4 om.save("D:\\我的文件\\Python\\壁紙5.jpg")

 

 

顯示如下:

            

 

 

2、圖像處理

代碼如下:

  

 1 from PIL import Image
 2 from PIL import ImageFilter
 3 im=Image.open("D:\\我的文件\\Python\\壁紙5.jpg")
 4 im.thumbnail((158,158))
 5 om.save("D:\\我的文件\\Python\\壁紙5.jpg")
 6 r,g,b=im.split()
 7 om=Image.merge("RGB",(b,g,r))
 8 om.save("D:\\我的文件\\Python\\壁紙3.jpg")
 9 om=im.filter(ImageFilter.CONTOUR)
10 om.save("D:\\我的文件\\Python\\壁紙2.jpg")
11 om=im.filter(ImageFilter.EMBOSS)
12 om.save("D:\\我的文件\\Python\\壁紙1.jpg")

 

 

顯示如下:

  

 

 3、提取圖像每一幀

  

 1 from PIL import Image
 2 #from PIL import ImageFilter
 3 im=Image.open("D:\\我的文件\\Python\\動圖.gif")
 4 try:
 5     im.save('picframe{:02d}.png'.format(im.tell()))
 6     while True:
 7         im.seek(im.tell()+1)
 8         im.save('picframe{:02d}.png'.format(im.tell()))
 9 except:
10     print("處理結束")

 

 

 

       

 

 

4、美圖秀秀  

1 from PIL import Image
2 from PIL import ImageEnhance
3 im=Image.open("D:\\我的文件\\Python\\壁紙4.jpg")
4 om=ImageEnhance.Contrast(im)        #調整圖像的對比度
5 om.enhance(20).save("D:\\我的文件\\Python\\壁紙7.jpg")
6 om=ImageEnhance.Sharpness(im)       #調整圖像的銳度
7 om.enhance(20).save("D:\\我的文件\\Python\\壁紙6.jpg")
8 om=ImageEnhance.Brightness(im)      #調整圖像的亮度
9 om.enhance(1).save("D:\\我的文件\\Python\\壁紙8.jpg")

  

結果如下:

   

  

 

 

 5、好玩的gif圖片

  

 1 from PIL import Image
 2 import os #第一步 獲得所有圖像文件列表,過濾不需要擴展名
 3 filelist = []  
 4 path = os.getcwd()
 5 files = os.listdir("D:\\我的文件\\Python")
 6 for f in files:  
 7     if(os.path.isfile(path + '/' + f)):
 8         if (os.path.splitext(f)[1] == ".BMP"):
 9             filelist.append(f)
10         if (os.path.splitext(f)[1] == ".JPG"):
11             filelist.append(f)
12         if (os.path.splitext(f)[1] == ".PNG"):
13             filelist.append(f)
14         if (os.path.splitext(f)[1] == ".TIF"):
15             filelist.append(f) #第二步 當判斷文件不是GIF格式的時候轉換為GIF格式
16 for infile in filelist:
17   outfile = os.path.splitext(infile)[0] + ".gif"
18   if infile != outfile:
19     try:
20       Image.open(infile).save(outfile)
21       print("Covert to GIF successfully!")
22     except IOError:
23       print("This format can not support!")
24       infile

  

 之後的成果我不知道怎麼展示~~~~

所以就到這裡啦

感覺自己好酷哦(哈哈哈哈哈哈哈哈哈哈)

      

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 單例模式概述 定義:確保一個類只有一個實例,並提供一個全局訪問點來訪問這個實例 簡單的說,就是你有且只有一個女朋友(有多個女朋友的模式不是這裡~~),並且你的女朋友很特殊,從來只聽你的話,所以別人想和她交流(訪問她)就必須通過你(全局訪問點)來和她交流。 系統中用到單例模式的地方很多,比如Windo ...
  • 相同點 1:都無法實例化。 2.都可以包含抽象方法。3.都可以有靜態方法(有方法體) 異同點 1.抽象類可以有成員方法的實現,而介面不能有成員方法的實現,只能聲明,不能有方法體。 2.抽象類可以有成員變數,介面只有靜態常量 3.在介面裡面無法聲明final級別的方法,而抽象類是可以的 4.抽象類裡面 ...
  • .net4.5部署到docker容器 1. 部署到windows容器 2. 部署到linux容器 部署到windows容器 由於.net本身就是運行在windows平臺的,所以它與windows容器也是更加適合,你可以以iis鏡像為基礎,去編寫你的Dockerfile文件,從而去構建你的.net項目 ...
  • 前言 ASP.NET Core 中 繼承的是AuthorizationHandler ,而ASP.NET Framework 中繼承的是AuthorizeAttribute. 它們都是用過重寫裡面的方法實現過濾請求的。 現在我們實現如何在 ASP.NET Core MVC 實現自定義授權。 關於Au ...
  • 一、什麼是外觀模式 定義:為子系統中的一組介面提供一個一致的界面,用來訪問子系統中的一群介面。 外觀模式組成: Facade:負責子系統的的封裝調用 Subsystem Classes:具體的子系統,實現由外觀模式Facade對象來調用的具體任務 二、外觀模式的使用場景 1、設計初期階段,應該有意識 ...
  • 前言: 相信很多人都聽過一個問題:把大象關進冰箱門,需要幾步? 第一,把冰箱門打開;第二,把大象放進去;第三,把冰箱門關上。我們可以看見,這個問題的答案回答的很有步驟。接下來我們介紹一種設計模式——模板方法模式,你會發現,它與這個問題的答案實際上有很多共同之處。 一、定義 定義一個演算法骨架,允許子類 ...
  • 簡介 CAT 是一個實時和接近全量的監控系統,它側重於對Java應用的監控,基本接入了美團上海所有核心應用。目前在中間件(MVC、RPC、資料庫、緩存等)框架中得到廣泛應用,為美團各業務線提供系統的性能指標、健康狀況、監控告警等。 優勢 實時處理:信息的價值會隨時間銳減,尤其是事故處理過程中。 全量 ...
  • 想著想著結果還是過了時間! 這個月的進度堪比之前幾年! 我自己的游戲用UE4寫的風聲水起! 美術的朋友給我做了好多動作! 我都想著以後弄個個人眾籌什麼的了,可見是進展不錯! 公司的事最近不太忙,反而是結婚的事越來越忙,戒指已經買完了,50分的也算不小了,1克拉的她也嫌貴! 前倆禮拜還順便把MACOS ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...