メモ@inudaisho

君見ずや出版 / 興味次第の調べ物置き場

画像に透かしをいれる

ウォーターマークってやつですか。

# -*- coding: utf-8 -*-
import Image,ImageDraw,ImageFont,ImageEnhance
oImage = Image.open("test.jpg").convert('RGBA')
oMark = Image.new('RGBA',oImage.size,(0,0,0,0))
oFont = ImageFont.truetype('/usr/share/fonts/truetype/fonts-japanese-gothic.ttf',100,encoding='utf-8')
ImageDraw.Draw(oMark).text((10,oImage.size[1] - 150),u'photo by 犬大将',font=oFont)
oMark = ImageEnhance.Brightness(oMark).enhance(0.5)
Image.composite(oMark,oImage,oMark).show()
#Image.composite(oMark,oImage,oMark).save('test2.jpg')

透明浮き彫り

# -*- coding: utf-8 -*-
import Image,ImageDraw,ImageFont,ImageFilter
oImage = Image.open("test.jpg").convert('RGBA')
#二枚無地を用意
oMark = Image.new('RGBA',oImage.size,(0,0,0,0))
oMark2 = oMark.copy()
#ひとつの無地に字を書きこむ
oFont = ImageFont.truetype('/usr/share/fonts/truetype/fonts-japanese-gothic.ttf',100,encoding='utf-8')
ImageDraw.Draw(oMark).text((10,oImage.size[1] - 150),u'photo by 犬大将',font=oFont)
#字をかいたものにエンボス加工し、加工してない字でマスクしてもうひとつの無地に書きこむ
oMark2.paste( oMark.filter(ImageFilter.BLUR).filter(ImageFilter.EMBOSS).filter(ImageFilter.EDGE_ENHANCE) ,mask=oMark)
# 写真と合成
Image.composite(oMark2,oImage,oMark2).show()


最初文字だけ浮き彫りにするやりかたがわからんかったが文字自身をフィルタにしたらできることに気付いてなんとかなった。
別に透過PNGを用意してなんとかするメジャーな方法もあるけど用意するのが面倒くさいのでやんない。
あとで機能を追加して写真の大きさや縦横にあわせてフォントの大きさを変えたり、位置をそろえたりできるようにした。↑のはできない。