iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
2
自我挑戰組

30天學python系列 第 16

[Day16] 圖像和文檔處理

  • 分享至 

  • xImage
  •  

操作圖像

計算機圖像相關知識

  1. 顏色:可以將紅,綠,藍三種色光以不同的比例疊加來組合成其他的顏色,通常會將一個顏色表示為一個 RGB 值或 RGBA 值,其中的 A 表示 Alpha 通道,它決定透過這個圖像的像素,也就是透明度。
  2. 像素:對於一個由數字序列表示的圖像來說,最小的單位就是圖像上單一顏色的小方格,這些小方塊都有一個明確的位置和被分配的色彩數值,而這些一小方格的顏色和位置決定該圖像最終呈現的樣子,它們是不可分割的單位,稱之為像素 (pixel)。每一個圖像都包含了一定量的像素,這些像素決定圖像在螢幕上所呈現的大小。

用 Pilliow 操作圖像

Pilliow 是由從著名的 Python 的圖像處理庫 PIL 發展出來的一個分支,通過 Pilliow 可以實現圖像壓縮和圖像處理等各種操作。可以透過 pip install pillow 命令來安裝 Pilliow。
Pillow 中最重要的是 Image 類別,讀取和處理圖像都要透過它來完成。
利用下面這張 Python 的 logo 執行以下程式碼。
https://ithelp.ithome.com.tw/upload/images/20190928/201211167iHVCLMAbT.png

from PIL import Image

image = Image.open('python.png')
# 格式, 尺寸, 模式(調色盤)
print(image.format, image.size, image.mode)
image.show()

色彩模式有分很多種,也可以互相轉換模式,可以參考這篇色彩模式
https://ithelp.ithome.com.tw/upload/images/20190928/20121116198CKggKls.png https://ithelp.ithome.com.tw/upload/images/20190928/20121116i7YGfDX2QB.png
1.剪裁圖像

from PIL import Image

image = Image.open('python.png')
rect = 80, 20, 310, 360  # 左, 上, 右, 下
image.crop(rect).show()  # crop() 切割

https://ithelp.ithome.com.tw/upload/images/20190928/20121116t6OnWsh4MM.png
2.生成略縮圖

from PIL import Image

image = Image.open('python.png')
size = 128, 128
image.thumbnail(size)  # 略縮圖
image.show()

https://ithelp.ithome.com.tw/upload/images/20190928/20121116FctPZVdh3E.png
3.縮放和黏貼圖像

from PIL import Image

image1 = Image.open('book.jpg')
image2 = Image.open('python.png')
rect = 140, 140, 480, 480
logo = image2.crop(rect)
width, height = logo.size
# 黏貼(對象(縮放大小), 位置)
image1.paste(logo.resize((int(width * 2.5), int(height * 2.5))), (1100, 600)) 
image1.show()

https://ithelp.ithome.com.tw/upload/images/20190928/20121116RL7V6o7CCo.png
4.旋轉和翻轉

from PIL import Image

image = Image.open('python.png')
image.rotate(90).show()  # 旋轉 90 度,不會改變圖像大小,所以會出現藍邊
# 翻轉 Image.FLIP_LEFT_RIGHT 由左向右,不會影響圖像品質
image.transpose(Image.FLIP_LEFT_RIGHT).show()

https://ithelp.ithome.com.tw/upload/images/20190928/2012111632dkE2lQC4.png
https://ithelp.ithome.com.tw/upload/images/20190928/20121116MM1p4YbgXh.png
5.操作像素

from PIL import Image

image = Image.open('python.png')
# 轉換色彩模式,原本 P 模式所用的色彩度和 RGB 不同
# 讓每個像素位置具有完整的 RGB 值
image_RBGA = image.convert('RGBA')
for x in range(140, 480):
    for y in range(140, 480):
        # 位置,  顏色
        image_RBGA.putpixel((x, y), (10, 10, 150, 250)) 

image_RBGA.show()

https://ithelp.ithome.com.tw/upload/images/20190928/20121116rG8R3a3Cr0.png
6.濾鏡效果

from PIL import Image, ImageFilter

image = Image.open('python.png')
# 轉換色彩模式,原本 P 模式所用的色彩度和 RGB 不同
# 能讓每個像素位置具有完整的 RGB 值
image_RBG = image.convert('RGB')
# ImageFilter.CONTOUR 輪廓濾鏡
image_RBG.filter(ImageFilter.CONTOUR).show()

https://ithelp.ithome.com.tw/upload/images/20190928/20121116TADutxfDAC.png

處理 Excel 試算表

Python 的 openpyxl 模組,Python 可以讀取和修改 Excel 試算表,可能也會用 LibreOffice Calc 和 OpenOffice Calc 來處理 Excel 的試算表文件,表示 openpyxl 模組也能處理來自這些軟體生成的試算表。

處理 Word 文檔

利用 python-docx 模組,Python 可以創建和修改 Word 文檔 Word 文檔不僅是指通過微軟的 Office 軟體創建的 docx 文檔,LibreOffice Writer 和 OpenOffice Writer 都是免費的文字處理軟體。

處理 PDF 文檔

PDF 是 Portable Document Format 的縮寫,使用 .pdf 作為文件副檔名。


上一篇
[Day15] 網路編程入門和網路應用開發
下一篇
[Day17] Python 語言進階 - 1
系列文
30天學python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言