2014-10-09 59 views
1

我想在像Python來創建一些文字圖片:蟒蛇 - 創建具有多種顏色的圖像,並添加文字

import PIL 
from PIL import ImageFont 
from PIL import Image 
from PIL import ImageDraw 
font = ImageFont.truetype("/usr/share/fonts/dejavu/DejaVuSans.ttf",25) 
img=Image.new("RGBA", (200,200),(120,20,20)) 
draw = ImageDraw.Draw(img) 
draw.text((0, 0),"This is a test",(255,255,0),font=font) 
draw = ImageDraw.Draw(img) 
img.save("test.png") 

這工作得很好,雖然我無法添加更多的色彩,例如3種不同的顏色紅色,黃色,綠色,將會像信號燈一樣。

此外,圖像是否可以轉換,例如轉角?

非常感謝

+0

[這個問題](的可能的重複http://stackoverflow.com/questions/7787375/python-imaging-library-pil-drawing-rounded-rectangle-帶有漸變) – 2014-10-11 00:40:07

+0

@Jonathan Eunice,這是絕對有用的,但我在上面的例子中需要的改變不需要超過3或4行。就像在圖像上添加/繪製另一個矩形一樣,只是使用另一種顏色。對於角落,一個橢圓可能會完成這項工作:) – 2014-10-11 00:57:41

回答

3

您可以在ImageDraw.Draw類使用chord通話。你必須通過這個函數四個參數,第一個參數是位置和大小,描述爲一個封閉盒,即(x1,y1,x2,y2),第二個是起始角,第三個是結束角;如果你想要一個完整的圓圈,你必須分別指定0和360。您可以使用命名參數fill設置填充顏色。

更好地與爲例進行了說明:

import PIL 
from PIL import ImageFont 
from PIL import Image 
from PIL import ImageDraw 

font = ImageFont.truetype("/usr/share/fonts/truetype/DejaVuSans.ttf",25) 
img=Image.new("RGBA", (200,200),(120,20,20)) 
draw = ImageDraw.Draw(img) 
draw.text((0, 0),"This is a test",(255,255,0),font=font) 
draw.chord((100, 75, 125, 100), 0, 360, fill='green') 
draw.chord((75, 100, 100, 125), 0, 360, fill='blue') 
draw.chord((125, 125, 150, 150), 0, 360, fill='yellow') 
draw = ImageDraw.Draw(img) 

img.save("test.png") 
+0

由於紅色背景,我使用綠色,藍色和黃色代替紅色,黃色和綠色。很容易改變這一點。 – Euribates 2015-02-11 13:00:17

+1

如果你想繪製一個信號燈,也許你可以使用預定義的圖像作爲基礎,而不是創建一個新的圖像。你可以使用'PIL.Image'中的'load'方法來做到這一點。 – Euribates 2015-02-11 13:05:37

+1

此外,保存操作之前的最後一次調用不需要: draw = ImageDraw.Draw(img) – Euribates 2015-02-11 13:06:07