好玩圖像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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...