2016-03-15 78 views
0

好的,首先要做的第一件事。這是this question的近似重複。使用Python Imaging Library在圖像頂部覆蓋彩色像素

但是,我面臨的問題在關鍵方面略有不同。

在我的應用程序中,我讀取了一個通用文件名,加載所述圖像並顯示它。在那裏變得棘手的是我覆蓋了「突出顯示」的外觀。爲此,我使用了Image.blend()函數,並將其與直黃色圖像混合。

但是,當處理混合時,我打錯了兩個圖像不兼容混合的錯誤。爲了解決這個問題,我打開了繪畫中的樣本圖像,並在整件事上塗上黃色,並將其保存爲副本。

剛纔我發現,當通過文件名讀入不同類型的圖像時,這會失敗。請記住,這需要是通用的。

所以我的問題是:而不是手動複製的圖像,我可以通過複製圖像和修改它,以便它是純黃色生成一個python?注意:我不需要在保存之後保存它,所以實現它就足夠了。

不幸的是,我不能分享我的代碼,但希望下面就給什麼,我需要一個想法:

from PIL import Image 

desiredWidth = 800 
desiredHeight = 600 

primaryImage = Image.open("first.jpg").resize((desiredWidth, desiredHeight), Image.ANTIALIAS) 

# This is the thing I need fixed: 
highlightImage = Image.open("highlight.jpg").resize((desiredWidth, desiredHeight), Image.ANTIALIAS) 

toDisplay = Image.blend(primaryImage, highlightImage, 0.3) 

由於任何人誰可以提供幫助。

+0

'黃色=(255,255,0); Image.new(primaryImage.mode,primaryImage.size,黃色)'? –

回答

0

聽起來像是你想使一個new圖像:

fill_color = (255,255,0) #define the colour as (R,G,B) tuple 

highlightImage = Image.new(primaryImage.mode, #same mode as the primary 
          primaryImage.size, #same size as the primary 
          fill_color)#and the colour defined above 

此創建了相同模式和大小已經打開的圖像new形象,而是用純色。乾杯。

此外,如果你正在使用的不是原裝PIL枕頭,你甚至可以通過名字來取得的顏色:

from PIL.ImageColor import getcolor 

overlay = 'yellow' 
fill_color = getcolor(overlay, primaryImage.mode) 
+1

我親愛的先生(或女士),你很美。這工作完美無瑕。非常感謝你。 P.S.可悲的是,投票是隱形的,但它在那裏。 – kirypto