2017-04-08 8 views
1

私はチケットごとにQRcodeを作成しています。 QRコードは画像形式です。 enter image description here画像を拡張し、python pilを使用して拡張領域にテキストを追加

この画像を両面(上下)に縦に拡大したいとします。そして、私はこのようないくつかの追加データを追加する拡張領域に:

image = Image.open('qrcode.jpg') 
width, height = image.size 
draw = ImageDraw.Draw(image) 
text_cinema = "RPG Cinema" 
text_seat = "Seat: 15C Balcony" 
text_movie = "The baby boss" 
text_showtime = "02:30 pm" 
text_date = "09/04/17" 
font = ImageFont.truetype('font.ttf', 24) 
draw.text((40, 5), text_cinema, font=font) 
draw.text((40,height - 40), text_seat, font=font) 
draw.text((40,height + 40), text_movie, font=font) 
draw.text((40,height + 40), text_showtime, font=font) 
image.save(str(time()).replace('.', '_') + '.jpg') 

と画像は、このようになります::

Theater Name 
_____________________ 
|     | 
|     | 
| QR CODE   | 
|     | 
|     | 
|     | 
|     | 
|     | 
|___________________| 

Seat id: 24 C 
Movie: The baby boss 
Showtime: 2:30 pm 
Date: 09/04/17 

今、私は画像を追加するには、この方法をやっている

enter image description here

ご覧のとおり、テキストはイメージに追加され、イメージ自体は拡張されません。また、text_movie,text_showtimeおよびtext_dateのような他のデータは、テキストが画像を拡大しないので挿入されていない。

イメージを拡張し、テキストを拡張イメージ領域に挿入するにはどうすればよいですか?

+0

は、画像を拡大するための提案です:https://stackoverflow.com/questions/1572691/in-python-python-image-library-1-1-6-how-can-i- canvas-without-resiz(私の以前のコメントは間違った質問にリンクしています)。 – Craig

答えて

1

最初にテキストを書き込むための大きな画像を作成し、QRをその画像に背景として貼り付けます。

>>> from PIL import Image 
>>> background = Image.new('RGBA', (176, 225), (255,255,255,255)) 
>>> from PIL import ImageDraw 
>>> draw = ImageDraw.Draw(background) 
>>> draw.text((5,5), "Top text", (0,0,0)) 
>>> draw.text((5,210),"Bottom", (0,0,0)) 
>>> qr = Image.open('qr.png') 
>>> background.paste(qr, (0,20)) 
>>> background.save('back.png') 

この場合、QRは176x176です。結果の画像は176×225です。私は、デフォルト以外のフォントを定義するのに苦労しませんでした。

結果は次のとおりです。

ここresult

関連する問題