會照片處理的不只是ps,還有Python!

2020-12-12 騰訊網

女朋友老是吵著要修圖,作為程式設計師,只會敲代碼,不會ps啊,真是令人頭大。

程式設計師是這麼容易被難到的嗎?肯定不會!最近發現了程式設計師的p圖神器——python。

python也可以修圖嗎?是滴!下面就帶你進入python的修圖世界。(以下面這張照片為例。)

圖片來源於pixabay

庫名稱:Pillow

Pillow是Python中最流行的圖像預處理函數庫,支持一系列簡單或複雜的圖像處理功能,也是其他Python庫(如SciPy和Matplotlib)能夠處理圖像的基礎。

01

安裝與導入

直接在cmd中使用pip方法安裝pillow庫:

pipinstallPillow

需要注意的是,其在Python2中的庫名為PIL,而非Pillow。

導入:

fromPILimportImage

02

基本操作

01 打開圖片使用Image模塊中的open函數打開一張圖片:

im= Image.open('1.jpg')

02 查看格式

format屬性定義了圖像的格式,如果圖像不是從文件打開的,那麼該屬性值為None:

im.format

輸出:'JPEG'

03 查看大小

size屬性是一個tuple,表示圖像的寬和高(單位為像素):

im.size

輸出:(960, 640)

04 查看模式

mode屬性為表示圖像的模式,模式屬性如下:

im.mode

輸出:'RGB'

05 查看文件名

im.filename

輸出:'1.jpg'

06 查看位數

im.bits

輸出:8

07 顯示圖片

標準版本的show()方法不是很有效率,因為它先將圖像保存為一個臨時文件,然後使用查看器進行顯示。

im.show()

08 保存圖片

im.save('2.jpg')

03

圖片處理

01 圖片裁剪

使用open方法讀取圖片,然後查看它的size,size的輸出是(960, 640),也就是圖片的寬度和高度。

之後我們調用crop方法來對圖片進行裁剪,crop需要給定一個box參數,box是一個四元組,元組中元素的順序是需要裁剪得到的圖片在原圖中的左、上、右、下坐標,即(left, upper, right, lower)。

然後,我們使用save方法保存裁剪得到的圖片。

from PIL import Image

img = Image.open("1.jpg")

print(img.size)

cropped = img.crop((200,,600,400)) # (left, upper,right, lower)

cropped.save("A.jpg")

裁剪後的圖片:

02 複製粘貼

Image的copy函數如其名會產生一個原圖像的副本,在這個副本上的任何操作不會影響到原圖像。

paste()方法用於將一個圖像粘貼(覆蓋)在另一個圖像上面。誰調用它,他就在該Image對象上直接作修改。

cropedIm =im.crop((400,,800,800))

im.paste(cropedIm, (,))

im.show()

im.save("B.jpg")

以裁剪後的圖像寬度和高度為間隔,在循環內不斷粘貼在副本中,會發生什麼呢?

cropedIm =im.crop((300,50,500,350))

crop_width, crop_height = cropedIm.size

width, height =im.size

copyIm =im.copy()

forleftinrange(, width, crop_width):

fortop inrange(, height, crop_height):

copyIm.paste(cropedIm, (left, top))

copyIm.save("C.jpg")

有一點像證件照的效果:

03 圖片縮放

resize方法返回指定寬高度的新Image對象,接受一個含有寬高的元組作為參數。寬高的值得是整數。

width, height =im.size

resizedIm =im.resize((width, height+(960-640)))

resizedIm.save("D.jpg")

人也變瘦了,可以看到resize不是等比例縮放的,不過女生應該蠻喜歡變瘦的吧。

04 圖片旋轉

圖像可以用rotate()方法旋轉,該方法返迴旋轉後的新Image對象,並保持原始Image對象不變。rotate()的參數是一個整數或浮點數。

im= Image.open("1.jpg")

im.rotate(90).save("E.jpg")

im.rotate(270).save("F.jpg")

im.rotate(180).save("G.jpg")

im.rotate(20).save("H.jpg")

由上到下,分別是旋轉了90°,180°, 270°、普通的20°。

當圖像旋轉90或270度時,寬度和高度會變化。在windows上, 會使用黑色的背景來填補旋轉造成的縫隙。

05 畫面增強

PIL模塊中有一個叫做ImageEnhance的類,該類專門用於圖像的增強處理,不僅可以增強(或減弱)圖像的亮度、對比度、色度,還可以用於增強圖像的銳度。

5.1 亮度增強Brightness:

enh_bri = ImageEnhance.Brightness(im)

brightness =1.5

image_brightened = enh_bri.enhance(brightness)

image_brightened.show()

5.2 對比度增強Contrast:

enh_con = ImageEnhance.Contrast(im)

contrast =1.5

image_contrasted = enh_con.enhance(contrast)

image_contrasted.show()

5.3 色度增強Color:

enh_col = ImageEnhance.Color(im)

color =1.5

image_colored = enh_col.enhance(color)

image_colored.show()

5.4 銳度增強Sharpness:

enh_sha = ImageEnhance.Sharpness(im)

sharpness =6.0

image_sharped = enh_sha.enhance(sharpness)

image_sharped.show()

調節亮度、對比度、色彩、銳度等,不就等於給照片加了濾鏡嗎?而且效果還不錯!

06 圖像過濾

在圖像處理中,經常需要對圖像進行平滑、銳化、邊界增強等濾波處理。

在使用PIL圖像處理庫時,我們通過Image類中的成員函數filter()來調用濾波函數對圖像進行濾波,而濾波函數則通過ImageFilter類來定義的。

6.1 高斯模糊

im.filter(ImageFilter.GaussianBlur).save("J.jpg")

6.2 浮雕

im.filter(ImageFilter.EMBOSS).save("L.jpg")

6.3 輪廓

im.filter(ImageFilter.CONTOUR).save("M.jpg")

除此之外,pillow中還提供以下濾波可供使用:

# 銳化

im.filter(ImageFilter.SHARPEN).save('.jpg')

# 平滑

im.filter(ImageFilter.SMOOTH).save('.jpg')

# 細節

im.filter(ImageFilter.DETAIL).save('.jpg')

# 普通模糊

im.filter(ImageFilter.BLUR).save('.jpg')

# 邊緣增強

im.filter(ImageFilter.EDGE_ENHANCE).save('.jpg')

# 找到邊緣

im.filter(ImageFilter.FIND_EDGES).save('.jpg')

關於python中pillow庫的照片處理到這兒就差不多了,雖然使用python進行照片處理跟ps還是有一定的差別,但基本操作沒有問題,四捨五入我們還是會修圖的!

- DataCastle -

相關焦點

  • python圖像處理-濾鏡處理
    前言很多時候用手機拍完照,為了讓照片看上去更好看,我們都會對照片做一些處理,而這裡用的最多的方法就是濾鏡了,常用的濾鏡一般有模糊濾鏡,其它的就是一些風格的變換了,比如黑白老照片,懷舊復古風,素描鉛筆藝術風等。
  • python圖像處理-gif動圖
    ,你會覺得是同一張圖片的不同形態。想法延伸動圖的內容還有很多可豐富的地方,也還有很多可優化的地方。比如你所以把一些尺寸不同的圖片合成動圖時,需要先將所有圖片統一尺寸,需要使用resize方法;或者你想在動圖上加上文字,可以結合之前處理單張圖片添加文字的方法,處理完之後在統一合成;或者你還想調整動圖的速率等等,具體更多內容可以留言問我。
  • python利用opencv實現證件照換底
    網上交證件照的時候不同單位對底色的要求不一樣,當你手裡只有一張藍底照片,卻要求交紅底或者白底的證件照時,不免就尷尬了些。此時的你為了避免重拍的麻煩,不得不打開ps一點一點地去摳圖換背景,費時費力。opencv今天就給大家介紹一下python利用opencv庫進行藍底換紅底或者白底照片的操作。
  • 簡單python爬蟲編寫
    ,只是單純的小分享。代碼不嚴謹的地方請見諒疫情期間在家閒來無事,每天打遊戲荒廢了一段時間。我覺得自己不能在這麼頹廢下去,就立馬起身寫了一點python代碼(本人只是python新手)。找來找去突然找到一個不錯的網站(你懂得),看見上面的照片於是起來自己寫了一個小程序能夠自動爬取這個網站照片的小程序來練練手上網站:https://www.meizitu.com/a/xinggan_2_1.html
  • ps處理照片美白牙齒的方法
    如何用ps美白照片上的大黃牙呢,非常簡單,跟著下面步驟一起做吧。方法/步驟雙擊ps圖標,打開ps,點擊菜單欄文件,打開人像素材圖像。
  • 廢照片處理用PS可以做出這樣美的效果 光繪線條
    最近學了一個比較好玩又好看的PS處理效果——光繪線條。做好後可以當美美的桌面或手機屏保,快跟著我繼續往下看吧。首先,找一張照片。拖進Photoshop中,Ctrl+j複製圖層。ps徑向模糊接著,我們就要把線條扭曲起來。選擇 濾鏡/扭曲/旋轉扭曲,在框中的角度處可以調整扭曲程度,我扭曲了-100,點擊確定。
  • Python入門很簡單,只要掌握3456點
    異常處理語句(try-except-else-finally) 六種數據類型(6) 1. 數字類型(int,bool,float,complex) 2. 字符串(str) 3. 列表(list) 4.
  • 《python 入陣曲:初級》開題報告
    ,但是要不就是過於科班,讓人看不進去(我一個專業的都看不進去更何況新手);要不就是有比較入門級別的視頻卻又非常粗製,有的普通話說不利索,有的用idle教寫python,有的教了一堆面向過程的散裝編程;就讓我覺得,應該在教編程的時候教一教正統的編程思想和編程藝術,不只是教授技法和工具。
  • 哪個照片處理軟體好用
    阻止不了時間的流逝,卻能把點滴的時間記錄下來。一張張照片,一段段回憶,成了你我留給世間的故事和情愫。然而這個時候卻發現照片少了些許意境,少了那時的情韻。何以解憂?何以才能將一張張充滿回憶的照片,修出那時的意境,那時的美。所以很多都會選擇很多照片處理軟體,那麼如何才能選擇一款好用的且適合自己的照片處理軟體。
  • 【光斑效果】ps給照片添加光斑
    一切都只是在利用各種辦法來忽悠大家說「其實我的器材很好所以才拍出來的,你們要是喜歡的話去買昂貴的鏡頭吧」,一邊耗著你的錢讓你以為當擁有這昂貴鏡頭的時候就能拍出這樣的光斑,一邊嘲笑著你不會變通以為世界的一切大多通過器材和前期實現。(我沒有說前期不重要啊!我也想要好鏡頭可惜我沒有錢!所以我只能找別人的痛楚來炫耀自己多麼懂得變通!)
  • ps基礎教程:ps的工具使用
    狀態欄窗口底部的狀態欄會顯示有用的信息。例如,現用圖像的當前放大倍數和文件大小,以及現用工具用法的簡要說明。好了,基本的界面大家了解了,大家知道ps為我們提供了一個平臺,我們可以在ps中對數碼照片進行調整、合成、特殊處理等等這樣的操作,那麼我們現在就來看看怎樣新建、打開和保存圖像文件。
  • 探討PS的下限:如何「合法」後期處理照片
    米拍攝影社區文章推薦:來自@Terry-F曾經有一段時間發照片,收到最多的留言都是這樣的詢問:「鳥是P的麼?」那時候我時常會為此感到十分惱火。那種心情就好比做了一桌子可口的菜餚,客人上桌就問「你這筷子看起來不像是木質的啊?」
  • 【PS技巧】網絡報考照片太大?一步教你PS縮小照片
    網絡報考照片太大上傳不了? 自己ps多次調整像素達到要求後,發現照片根本不清晰! 下面教你一招搞定報考網傳照片。
  • python能做什麼
    python能做什麼?書聲琅琅Python培訓老師介紹,最近許多的朋友諮詢,聽說python很火,甚至可以超越JAVA,因此很想學這個python,但是不知道python能做什麼,能完成一些什麼項目呢?針對這個問題,今天徐老師跟大家來聊一聊python能做什麼的話題。
  • 軟體一鍵處理,輕鬆搞定報名照片
    大家是否經歷過照片不符合要求的各種情況呢,怎奈自己沒有ps大神的技術,亦或擔心磨滅自己自拍照的風騷氣息而下不去手。 有了今天的軟體,一切都不是事,把自己的面子先放一放,考試報名要緊。這款軟體,只有兩步,打開圖片,保存圖片,輕鬆搞定報名照片!
  • PS教程:PS製作拍立得照片散落效果
    本篇教程要和大家分享的是比較特別的照片處理教程,以下是Photoshop製作拍立得照片散落效果的詳細步驟。
  • Python文本處理工具都有哪些?
    1、 NLTK — Natural Language Toolkit搞自然語言處理的同學應該沒有人不知道NLTK吧,這兒也就不多說了。NLTK 2.0 Cookbook》,這本書要深入一些,會涉及到NLTK的代碼結構,一起會介紹怎麼定製自己的語料和模型等,相當不錯。
  • 操作簡單,易上手的三款在線ps處理工具
    網際網路時代,科技的飛速發展,網絡已經成為解決問題,處理問題的首選工具。比如圖片處理,在線作圖編輯的工具越來越多,用戶無需去專門學習設計技能,就能夠輕鬆地繪製出自己想要的圖片,展現出自身的創意。懶設計Fotor懶設計是非常受歡迎的平面設計工具和在線平面設計網站之一,提供海量海報、邀請函、賀卡、banner、logo、名片等免費設計素材和模板,可在線一鍵稿定設計、印刷,並能在線圖片編輯、照片編輯。
  • python3+dlib人臉識別及情緒分析
    3、眯眼睛,人在開懷大笑的時候會不自覺的眯起眼睛,憤怒或者驚訝的時候會瞪大眼睛。系統缺點:不能捕捉細微表情的變化,只能大致的判斷出人的情緒,開心、憤怒、驚訝、自然。系統優點:結構簡單,易於上手。應用領域:微笑抓拍,捕捉瞬間的美好、緩解兒童自閉症、交互式遊戲開發。
  • 書聲琅琅:好的Python入門教程
    好的Python入門教程,書聲琅琅教育番茄老師微信pykf20介紹,python語言現在應用非常廣泛,不管是大數據還是人工智慧,應用最多的語言還是python,因此對於許多小白來講,看到python從業者的高薪資,想要轉行,或者致力於python開發的朋友,如果要學習python,從零基礎開始,一定需要一套完整的學習路線。