python圖像和辦公文檔處理總結(jié)
用程序來處理圖像和辦公文檔經(jīng)常出現(xiàn)在實(shí)際開發(fā)中,Python的標(biāo)準(zhǔn)庫中雖然沒有直接支持這些操作的模塊,但我們可以通過Python生態(tài)圈中的第三方模塊來完成這些操作。
操作圖像
計(jì)算機(jī)圖像相關(guān)知識(shí)
顏色。如果你有使用顏料畫畫的經(jīng)歷,那么一定知道混合紅、黃、藍(lán)三種顏料可以得到其他的顏色,事實(shí)上這三種顏色就是被我們稱為美術(shù)三原色的東西,它們是不能再分解的基本顏色。在計(jì)算機(jī)中,我們可以將紅、綠、藍(lán)三種色光以不同的比例疊加來組合成其他的顏色,因此這三種顏色就是色光三原色,所以我們通常會(huì)將一個(gè)顏色表示為一個(gè)RGB值或RGBA值(其中的A表示Alpha通道,它決定了透過這個(gè)圖像的像素,也就是透明度)。
| 名稱 | RGBA值 | 名稱 | RGBA值 |
|---|---|---|---|
| White | (255, 255, 255, 255) | Red | (255, 0, 0, 255) |
| Green | (0, 255, 0, 255) | Blue | (0, 0, 255, 255) |
| Gray | (128, 128, 128, 255) | Yellow | (255, 255, 0, 255) |
| Black | (0, 0, 0, 255) | Purple | (128, 0, 128, 255) |
像素。對(duì)于一個(gè)由數(shù)字序列表示的圖像來說,最小的單位就是圖像上單一顏色的小方格,這些小方塊都有一個(gè)明確的位置和被分配的色彩數(shù)值,而這些一小方格的顏色和位置決定了該圖像最終呈現(xiàn)出來的樣子,它們是不可分割的單位,我們通常稱之為像素(pixel)。每一個(gè)圖像都包含了一定量的像素,這些像素決定圖像在屏幕上所呈現(xiàn)的大小。
用Pillow操作圖像
Pillow是由從著名的Python圖像處理庫PIL發(fā)展出來的一個(gè)分支,通過Pillow可以實(shí)現(xiàn)圖像壓縮和圖像處理等各種操作??梢允褂孟旅娴拿顏戆惭bPillow。
pip install pillow
Pillow中最為重要的是Image類,讀取和處理圖像都要通過這個(gè)類來完成。
>>> from PIL import Image
>>>
>>> image = Image.open('./res/guido.jpg')
>>> image.format, image.size, image.mode
('JPEG', (500, 750), 'RGB')
>>> image.show()

剪裁圖像
>>> image = Image.open('./res/guido.jpg')
>>> rect = 80, 20, 310, 360
>>> image.crop(rect).show()

生成縮略圖
>>> image = Image.open('./res/guido.jpg')
>>> size = 128, 128
>>> image.thumbnail(size)
>>> image.show()

縮放和黏貼圖像
>>> image1 = Image.open('./res/luohao.png')
>>> image2 = Image.open('./res/guido.jpg')
>>> rect = 80, 20, 310, 360
>>> guido_head = image2.crop(rect)
>>> width, height = guido_head.size
>>> image1.paste(guido_head.resize((int(width / 1.5), int(height / 1.5))), (172, 40))

旋轉(zhuǎn)和翻轉(zhuǎn)
>>> image = Image.open('./res/guido.png')
>>> image.rotate(180).show()
>>> image.transpose(Image.FLIP_LEFT_RIGHT).show()


操作像素
>>> image = Image.open('./res/guido.jpg')
>>> for x in range(80, 310):
... for y in range(20, 360):
... image.putpixel((x, y), (128, 128, 128))
...
>>> image.show()

濾鏡效果
>>> from PIL import Image, ImageFilter
>>>
>>> image = Image.open('./res/guido.jpg')
>>> image.filter(ImageFilter.CONTOUR).show()

處理Excel電子表格
Python的openpyxl模塊讓我們可以在Python程序中讀取和修改Excel電子表格,當(dāng)然實(shí)際工作中,我們可能會(huì)用LibreOffice Calc和OpenOffice Calc來處理Excel的電子表格文件,這就意味著openpyxl模塊也能處理來自這些軟件生成的電子表格。關(guān)于openpyxl的使用手冊(cè)和使用文檔可以查看它的官方文檔。
處理Word文檔
利用python-docx模塊,Pytho 可以創(chuàng)建和修改Word文檔,當(dāng)然這里的Word文檔不僅僅是指通過微軟的Office軟件創(chuàng)建的擴(kuò)展名為docx的文檔,LibreOffice Writer和OpenOffice Writer都是免費(fèi)的字處理軟件。
處理PDF文檔
PDF是Portable Document Format的縮寫,使用.pdf作為文件擴(kuò)展名。接下來我們就研究一下如何通過Python實(shí)現(xiàn)從PDF讀取文本內(nèi)容和從已有的文檔生成新的PDF文件。
相關(guān)文章
在Python中進(jìn)行自動(dòng)化單元測(cè)試的教程
這篇文章主要介紹了在Python中進(jìn)行自動(dòng)化單元測(cè)試的教程,本文來自于IBM官方文檔,需要的朋友可以參考下2015-04-04
SpringMVC和SpringBoot接收參數(shù)的幾種方式詳解
這篇文章主要介紹了SpringMVC和SpringBoot接收參數(shù)的幾種方式詳解,Spring是分層的JavaSE/EE應(yīng)用輕量級(jí)開源框架,以IoC和AOP為內(nèi)核,提供了展現(xiàn)層 Spring MVC和持久層Spring JDBC以及業(yè)務(wù)層事務(wù)管理等眾多的企業(yè)級(jí)應(yīng)用技術(shù),需要的朋友可以參考下2023-07-07
python實(shí)現(xiàn)字符串和字典的轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)字符串和字典的轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
python?cv2.waitKey()函數(shù)的使用
這篇文章主要介紹了python?cv2.waitKey()函數(shù)的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
利用Python實(shí)現(xiàn)快捷操作文件和文件夾
shutil是Python標(biāo)準(zhǔn)庫中的一個(gè)模塊,提供了許多用于文件和文件夾操作的高級(jí)接口,本文主要詳細(xì)介紹了Python如何使用shutil實(shí)現(xiàn)快捷操作文件和文件夾,需要的可以參考下2024-02-02

