python PIL練習

繼續透過Motherboard HackThis系列文章的「仿作」方式,一邊溫習簡單的python語法規則,一邊查讀相關文件重溫程式規則語法以及函式功能。本篇原文出處Hack This: Edit an Image with Python, 
利用python及其函式庫來進行圖片的編輯修改。(噁,雖然用圖片介面GLI的圖像編輯軟體如Adobe 旗艦商業軟體PS,或是對一般用戶基本需求功能不輸PS的開源自由軟膿GIMP,其使用便利已遠遠超過花時間寫python程式碼來做圖片編輯,但目的當然不是要編修照片,而是透過了解python以及相關函式庫,來練習程式學習)

1. Pillow入門基礎模組Image
同樣先透過pip(Python Package Index),即python的套件管理程式,來安裝 Pillow
$pip install Pillow
Pillow 是PIL的進化版,而PIL則是Python Imaging Library之意,從它的使用文件資料中,可以看到其具有十多種圖片編輯之模組,例如其Image module 底下就有幾十種功能,有空不妨照著它的文件來試試這些功能如何能使用。例如在motherboard 原文中介紹的thumbnail,即可以照片改成size指定的尺寸大小。(我另外試了rezise功能,但它是照片的檔案變小,但像素大小卻未改變)
from PIL import Image, ImageFilter
img = Image.open('jpl_pioneer_galaxy_full.jpg') 
size = (640,640)
img.thumbnail(size)
img.save('main_jpl_pioneer_galaxy_full_small.jpg')
而另一個Image.filter功能,則是在括弧()內放入欲應用的ImageFilter模組的method,如 BLUR, CONTOUR, DETAIL, EDGE_ENHAN, EDGE_ENHANCE_MORE, EMBOSS, FIND_EDGES, SMOOTH, SMOOTH_MORE, SHARPEN等基本濾鏡功能

如下圖,是利用ImageFilter.BLUR作出的模糊化效果
from PIL import Image, ImageFilter
img = Image.open('jpl_pioneer_galaxy_full.jpg') 
img = img.filter(ImageFilter.BLUR)
img.save("blurred.jpg", "JPEG")

另外ImageFilter底下還有一些類別class, 例如用這個高斯模糊濾器 img = ImageFilter.GaussianBlur(radius=5)


第一張為原始照片,第二張則是修改過的,據說它的作妦在減少圖片雜訊及降低細節層次,其視覺效果如同經由一個半透明的濾鏡來觀察圖片,當然其參數radius可以自行調整所欲的數值。

2. ImageChops 模組
根據其使用文件的說明,這個模組是透過圖片運算操作來進行圖片的修改編輯。例如ImageChops.add()
可以把二張照片合成為一張
from PIL import Image, ImageChops
img1 = Image.open("pic1.jpg")
img2 = Image.open("pic.jpg")
img3 = ImageChops.add(img1, img2, 1, 0) ##括弧中的後兩個參數分別代表scale 與offset 後者應是指二張照片相應之對比,而scale則是其對比程度
img3.save("add1.jpg") 

下二張照片,第一張scale=1 offset = 0, 第二張 scale=1 offset = 2
 


本習作使用的二張原始照片



----------------
因為一連幾天透過這種方式重溫python程式語法,一邊摸索一邊回想過去讀過的一些資訊很需要再重新拿出來翻讀,以確認自己的觀念與認知正確。尤其雖然只是簡單地引入某些別人早已寫好的函式庫,利用此處整理一下之前從Learning Python the Hard Way:Modules, Classes, and Objects
Moudle簡單說,可以把它看成一支多支的python 程式,例如寫了一支簡單的mystuff.py 程式,其內容如下:

def apple():
     print "I AM APPLES!"

tangerine = "Living reflection of a dream" #這裏tangerine和上面的apple不同,前者只是一個變數,後者是一個可執行某種功能的函式

現在在另一支程式中,要使用到apple函式或使用tangerine這個變數
import mystuff
mystuff.apple()  # get apple from the module mystuff.py
print (mystuff.tangerine) # get tangerine, it's a variable

0 意見:

Security First: umbrella app 中文化滙整

之前提過會作一篇 Security First's umbrella app 滙整與中文化超連結整合,以讓未下載使用、觀看過原手機應用的讀者(其實指的就是錯亂的我自己本人)稍能有全盤的概念來想像這個手機應用程式(或更精準的說:一個手機上的隨身電子書)的內容。好了,本文...

Videos

Contact Form

Name

Email *

Message *

Home Top Ad

Responsive Ads Here

Post Bottom Ad

Responsive Ads Here

Author Details

Templatesyard is a blogger resources site is a provider of high quality blogger template with premium looking layout and robust design. The main mission of templatesyard is to provide the best quality blogger templates which are professionally designed and perfectlly seo optimized to deliver best result for your blog.

Tags

Categories

Contact


Breaking

Recent News

Pages

Recent

Fashion

Connect With us

Comments

News

Food

Sports

test banner

Food

Technology

Featured