熱線電話:13121318867

登錄
首頁精彩閱讀一行代碼搞定的事還用個錘子的 PS 啊
一行代碼搞定的事還用個錘子的 PS 啊
2021-10-29
收藏

作者:豆豆

來源:Python 技術

在我們的日常生活和工作中有不少場景需要簡單處下理圖片,很多人都是依賴 PS、美圖秀秀等各種圖像處理工具,殊不知在你打開軟件的一瞬間 Python 就已經將圖片處理完了。聽起來是不是很神奇,正所謂是 Python 在手,啥也不愁。

Python 屆處理圖片最強的庫是 PIL(Python Image Library),但由于該庫只支持 2.x 版本,于是有一批樂于助人的程序員在此基礎上做了擴展,出了一個兼容 3.x 的版本也就是 Pillow,因此,我們今天要用的庫就是 Pillow。

安裝

老規矩,先通過 pip 安裝到本地機器。

pip install Pillow

基本操作

打開圖像

可以通過 Image 類來操控圖片,比如打開一張圖片并獲取其基本信息。

from PIL import Image, ImageFilter, ImageEnhance, ImageDraw, ImageFont

img = Image.open('cat.jpg') print(F'圖片大小為 {img.format}, 格式為 {img.size}, 模式為{img.mode}') # 圖片大小為 JPEG, 格式為 (3458, 3456), 模式為 RGB 

轉換格式

如果給目標圖片轉換格式,可以通過 save 函數來實現。

img.save("cat.jpg ")

之后你就會在同目錄下得到一張擴展名為 png 的圖片了。

一行代碼搞定的事還用個錘子的 PS 啊

展示圖片

直接通過 show 函數來顯示圖片。

img.show()

剪裁

使用 crop 函數傳入一個四元祖坐標來剪裁圖片。

point = (1500, 800, 3000, 2300) img_crop = img.crop(point) img_crop.show() 
一行代碼搞定的事還用個錘子的 PS 啊

合并

通過 paste 函數傳入合并的圖像和坐標來實現兩張圖片的合并,那如果要合并多張圖片呢,當然是直接調用多次就好了呀。

img.paste(img_crop, (0, 0), None) img.show(
一行代碼搞定的事還用個錘子的 PS 啊

縮略圖

有時候圖像過大,這時候就顯示出縮略圖的必要了,可以通過 thumbnail 函數傳入 size 來實現圖片的縮小。

thumb_size = (345, 345)
img.thumbnail(thumb_size)
img.show()
一行代碼搞定的事還用個錘子的 PS 啊

旋轉

使用 transpose 函數傳入旋轉角度來實現圖片的翻轉。

可以傳入的參數有以下幾種:

  • Image.ROTATE_90:逆時針旋轉 90°
  • Image.ROTATE_180:逆時針旋轉 180°
  • Image.ROTATE_270:逆時針旋轉 270°
  • Image.FLIP_LEFT_RIGHT:左右翻轉
  • Image.FLIP_TOP_BOTTOM:上下翻轉
img_rotate = img.transpose(Image.ROTATE_90)
img_rotate.show()
一行代碼搞定的事還用個錘子的 PS 啊

濾鏡

當然,我們還可以對圖片做一些濾鏡處理。

  • 高斯模糊處理
img_gaussianblur = img.filter(ImageFilter.GaussianBlur(30))
img_gaussianblur.show()
一行代碼搞定的事還用個錘子的 PS 啊
  • 獲取照片輪廓
img_contour = img.filter(ImageFilter.CONTOUR)
img_contour.show()
一行代碼搞定的事還用個錘子的 PS 啊
  • 亮度增強

如果照片亮度不夠,還可以對照片進行亮度增強。

color = ImageEnhance.Color(img)
img_color = color.enhance(1.5)
img_color.show()
一行代碼搞定的事還用個錘子的 PS 啊

二次創作

當然,如果想對圖片進行二次創作,比如添加一些輔助線,文字之類的可以用 ImageDraw 類來完成。

畫線

draw = ImageDraw.Draw(img) draw.line((0, 0) + img.size, fill=20, width=3) draw.line((0, img.size[1], img.size[0], 0), fill=200, width=3) img.show() 
一行代碼搞定的事還用個錘子的 PS 啊

文字draw = ImageDraw.Draw(img)
font = ImageFont.truetype(
'AliPuHui-Bold.ttf'200)
text = 'This is a cat!'
draw.text((450450), text, font=font, fill='pink')
img.show()

一行代碼搞定的事還用個錘子的 PS 啊

當然,如果有多行文字的話,直接加入換行符 n 即可。

一行代碼搞定的事還用個錘子的 PS 啊

總結

今天派森醬帶大家一起通過使用 Pillow 庫對圖片進行一些簡單的操作,事實上 Pillow 庫遠不止此,將這些簡單的操作進行組合甚至可以自創表情包,期待小伙伴們自行發掘更多更好玩的用法呀~

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢