python圖像和辦公文檔處理總結(jié)
用程序來(lái)處理圖像和辦公文檔經(jīng)常出現(xiàn)在實(shí)際開(kāi)發(fā)中,Python的標(biāo)準(zhǔn)庫(kù)中雖然沒(méi)有直接支持這些操作的模塊,但我們可以通過(guò)Python生態(tài)圈中的第三方模塊來(lái)完成這些操作。
操作圖像
計(jì)算機(jī)圖像相關(guān)知識(shí)
顏色。如果你有使用顏料畫(huà)畫(huà)的經(jīng)歷,那么一定知道混合紅、黃、藍(lán)三種顏料可以得到其他的顏色,事實(shí)上這三種顏色就是被我們稱(chēng)為美術(shù)三原色的東西,它們是不能再分解的基本顏色。在計(jì)算機(jī)中,我們可以將紅、綠、藍(lán)三種色光以不同的比例疊加來(lái)組合成其他的顏色,因此這三種顏色就是色光三原色,所以我們通常會(huì)將一個(gè)顏色表示為一個(gè)RGB值或RGBA值(其中的A表示Alpha通道,它決定了透過(guò)這個(gè)圖像的像素,也就是透明度)。
名稱(chēng) | RGBA值 | 名稱(chēng) | 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ù)字序列表示的圖像來(lái)說(shuō),最小的單位就是圖像上單一顏色的小方格,這些小方塊都有一個(gè)明確的位置和被分配的色彩數(shù)值,而這些一小方格的顏色和位置決定了該圖像最終呈現(xiàn)出來(lái)的樣子,它們是不可分割的單位,我們通常稱(chēng)之為像素(pixel)。每一個(gè)圖像都包含了一定量的像素,這些像素決定圖像在屏幕上所呈現(xiàn)的大小。
用Pillow操作圖像
Pillow是由從著名的Python圖像處理庫(kù)PIL發(fā)展出來(lái)的一個(gè)分支,通過(guò)Pillow可以實(shí)現(xiàn)圖像壓縮和圖像處理等各種操作??梢允褂孟旅娴拿顏?lái)安裝Pillow。
pip install pillow
Pillow中最為重要的是Image類(lèi),讀取和處理圖像都要通過(guò)這個(gè)類(lèi)來(lái)完成。
>>> 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來(lái)處理Excel的電子表格文件,這就意味著openpyxl模塊也能處理來(lái)自這些軟件生成的電子表格。關(guān)于openpyxl的使用手冊(cè)和使用文檔可以查看它的官方文檔。
處理Word文檔
利用python-docx模塊,Pytho 可以創(chuàng)建和修改Word文檔,當(dāng)然這里的Word文檔不僅僅是指通過(guò)微軟的Office軟件創(chuàng)建的擴(kuò)展名為docx的文檔,LibreOffice Writer和OpenOffice Writer都是免費(fèi)的字處理軟件。
處理PDF文檔
PDF是Portable Document Format的縮寫(xiě),使用.pdf作為文件擴(kuò)展名。接下來(lái)我們就研究一下如何通過(guò)Python實(shí)現(xiàn)從PDF讀取文本內(nèi)容和從已有的文檔生成新的PDF文件。
相關(guān)文章
淺談python多進(jìn)程共享變量Value的使用tips
今天小編就為大家分享一篇淺談python多進(jìn)程共享變量Value的使用tips,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07基于Python實(shí)現(xiàn)貪吃蛇小游戲(附源碼)
本次我們將編寫(xiě)一個(gè)貪吃蛇的游戲。通過(guò)鍵盤(pán)上、下、左、右控制小蛇上、下、左、右移動(dòng),吃到食物后長(zhǎng)度加1;蛇頭碰到自身或窗口邊緣,游戲失敗,需要的可以參考一下2022-11-11python模擬點(diǎn)擊網(wǎng)頁(yè)按鈕實(shí)現(xiàn)方法
在本篇文章里小編給大家整理的是一篇關(guān)于python模擬點(diǎn)擊網(wǎng)頁(yè)按鈕實(shí)現(xiàn)方法,需要的朋友們可以參考下。2020-02-02PyTorch搭建ANN實(shí)現(xiàn)時(shí)間序列風(fēng)速預(yù)測(cè)
這篇文章主要為大家介紹了PyTorch搭建ANN實(shí)現(xiàn)時(shí)間序列風(fēng)速預(yù)測(cè),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python性能分析工具pyinstrument提高代碼效率
今天分享一個(gè)超級(jí)實(shí)用的 Python 性能分析工具 pyinstrument ,可以快速找到代碼運(yùn)行最慢的部分,幫助提高代碼的性能。支持 Python 3.7+ 且能夠分析異步代碼,僅需一條命令即可顯示具體代碼的耗時(shí)。經(jīng)常寫(xiě) Python 的小伙伴一定要用一下2021-09-09python?flask框架中多種查詢(xún)參數(shù)的獲取方式
這篇文章主要介紹了pythonflask框架的生命周期以及多種查詢(xún)參數(shù)的獲取方式,文章通過(guò)代碼示例和圖文講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03python全棧開(kāi)發(fā)語(yǔ)法總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于python全棧開(kāi)發(fā)語(yǔ)法的相關(guān)總結(jié)內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)參考下。2020-11-11Django實(shí)現(xiàn)WebSSH操作物理機(jī)或虛擬機(jī)的方法
這篇文章主要介紹了Django實(shí)現(xiàn)WebSSH操作物理機(jī)或虛擬機(jī)的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11