生成一張純色的圖片
創(chuàng)新互聯(lián)是一家專業(yè)提供榕城企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都網(wǎng)站建設(shè)、H5建站、小程序制作等業(yè)務(wù)。10年已為榕城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進(jìn)行中。
先設(shè)置圖片的顏色,接著利用Image模塊的new方法新生成一張圖片,png格式的圖片需要設(shè)置成rgba,類似的還有rgb,L(灰度圖等),尺寸設(shè)定為640,480,這個可以根據(jù)自己的情況設(shè)定,顏色同樣如此。
批量生成圖片
上面生成了一張圖片,那要生成十張圖片呢,這種步驟一樣,只是顏色改變的,利用循環(huán)就可以解決。首先創(chuàng)建一個顏色列表,把要生成的圖片顏色放進(jìn)去。接著循環(huán)獲取不同的顏色,保存的時候利用字符串拼接的方法改變圖片的名字。
本地生成的圖片
封裝成函數(shù)
前面的方法已經(jīng)可以批量生成圖片了,為了通用性強(qiáng)一點(diǎn),我們可以封裝成函數(shù),把哪些可以改變的參數(shù)單獨(dú)抽離出來。尺寸也同樣,使用的時候,可以根據(jù)自己的需要定義顏色列表和尺寸。當(dāng)然還有加一些提示用語和報錯兼容性,這里就不講了。
本地生成的圖片
convert函數(shù)作用是將圖片轉(zhuǎn)化為Surface對象,pygame現(xiàn)在會自動這么做,不用你去寫;convert_alpha相對于convert,保留了圖像的Alpha 通道信息,這個你可以去百度一下,可以認(rèn)為是保留了透明的部分,這樣圖片才可以是不規(guī)則的。
Python圖像處理是一種簡單易學(xué),功能強(qiáng)大的解釋型編程語言,它有簡潔明了的語法,高效率的高層數(shù)據(jù)結(jié)構(gòu),能夠簡單而有效地實現(xiàn)面向?qū)ο缶幊蹋挛倪M(jìn)行對Python圖像處理進(jìn)行說明。
當(dāng)然,首先要感謝“戀花蝶”,是他的文章“用Python圖像處理 ” 幫我堅定了用Python和PIL解決問題的想法,對于PIL的一些介紹和基本操作,可以看看這篇文章。我這里主要是介紹點(diǎn)我在使用過程中的經(jīng)驗。
PIL可以對圖像的顏色進(jìn)行轉(zhuǎn)換,并支持諸如24位彩色、8位灰度圖和二值圖等模式,簡單的轉(zhuǎn)換可以通過Image.convert(mode)函數(shù)完 成,其中mode表示輸出的顏色模式。例如''L''表示灰度,''1''表示二值圖模式等。
但是利用convert函數(shù)將灰度圖轉(zhuǎn)換為二值圖時,是采用固定的閾 值127來實現(xiàn)的,即灰度高于127的像素值為1,而灰度低于127的像素值為0。為了能夠通過自定義的閾值實現(xiàn)灰度圖到二值圖的轉(zhuǎn)換,就要用到 Image.point函數(shù)。
深度剖析Python語法功能
深度說明Python應(yīng)用程序特點(diǎn)
對Python數(shù)據(jù)庫進(jìn)行學(xué)習(xí)研究
Python開發(fā)人員對Python經(jīng)驗之談
對Python動態(tài)類型語言解析
Image.point函數(shù)有多種形式,這里只討論Image.point(table, mode),利用該函數(shù)可以通過查表的方式實現(xiàn)像素顏色的模式轉(zhuǎn)換。其中table為顏色轉(zhuǎn)換過程中的映射表,每個顏色通道應(yīng)當(dāng)有256個元素,而 mode表示所輸出的顏色模式,同樣的,''L''表示灰度,''1''表示二值圖模式。
可見,轉(zhuǎn)換過程的關(guān)鍵在于設(shè)計映射表,如果只是需要一個簡單的箝位值,可以將table中高于或低于箝位值的元素分別設(shè)為1與0。當(dāng)然,由于這里的table并沒有什么特殊要求,所以可以通過對元素的特殊設(shè)定實現(xiàn)(0, 255)范圍內(nèi),任意需要的一對一映射關(guān)系。
示例代碼如下:
import Image # load a color image im = Image.open(''fun.jpg'') # convert to grey level image Lim = im.convert(''L'') Lim.save(''fun_Level.jpg'') # setup a converting table with constant threshold threshold = 80 table = [] for i in range(256): if i threshold: table.append(0) else: table.append(1) # convert to binary image by the table bim = Lim.point(table, ''1'') bim.save(''fun_binary.jpg'')
IT部分通常要完成的任務(wù)相當(dāng)繁重但支撐這些工作的資源卻很少,這已經(jīng)成為公開的秘密。任何承諾提高編碼效率、降低軟件總成本的IT解決方案都應(yīng)該進(jìn)行 周到的考慮。Python圖像處理所具有的一個顯著優(yōu)勢就是可以在企業(yè)的軟件創(chuàng)建和維護(hù)階段節(jié)約大量資金,而這兩個階段的軟件成本占到了軟件整個生命周期中總成本 的50%到95%。
Python清晰可讀的語法使得軟件代碼具有異乎尋常的易讀性,甚至對那些不是最初接觸和開發(fā)原始項目的程序員都 能具有這樣的強(qiáng)烈感覺。雖然某些程序員反對在Python代碼中大量使用空格。
不過,幾乎人人都承認(rèn)Python圖像處理的可讀性遠(yuǎn)勝于C或者Java,后兩 者都采用了專門的字符標(biāo)記代碼塊結(jié)構(gòu)、循環(huán)、函數(shù)以及其他編程結(jié)構(gòu)的開始和結(jié)束。提倡Python的人還宣稱,采用這些字符可能會產(chǎn)生顯著的編程風(fēng)格差 異,使得那些負(fù)責(zé)維護(hù)代碼的人遭遇代碼可讀性方面的困難。轉(zhuǎn)載