質問: Pythonで画像編集をしたいのですが、ポジションが上手く指定出来ません。 以下のコードだと画像のサイズによってポジションが変わるので常に同じ場所に固定したいです。 ``` draw.text((1000, 800), u'https', fill=(255, 0, 0)) ``` 1000がx座標で800がy座標だそうです。 下の画像のように入れたい。 よろしくお願いします。 ![文字列](https://i.stack.imgur.com/CVwJA.jpg)
回答: 読み込んだ画像の .size プロパティで幅と高さがわかるので、そこから書き込みたい文字列のサイズ分の領域を引けば開始座標が得られるでしょう。 Pythonで画像の大きさやフォーマットを調べる(Pillow編) 【Python/Pillow】画像の幅と高さを取得(縦・横のサイズ) > > > ``` > img = Image.open("input.jpg") > width, height = img.size > > ``` > > それに対して質問のように`draw.text`すれば良いのではないでしょうか? 画像サイズが文字列を書けるくらい十分にあるかどうかは事前に判定して調整したり、フォントや背景色の指定なども付け加えておくおく必要があるでしょうけれど。 Pythonで画像に日本語文字を入れる。 【Python】Pillowで画像にテキストを描き込む [Python] Pillowによる画像処理(ImageDrawオブジェクトで図形描画) ``` draw.text(((width - 文字列描画領域幅), (height - 文字列描画領域高さ)), u'https', fill=(255, 0, 0)) ``` 描画する文字列のサイズを取得する方法はこちらの記事を参考に。 Pythonで画像に描画するテキストのピクセルサイズを取得 同じ作者のシリーズでOpenCV+Pillowで同様の文字列描画を行っている記事 Pythonで画像に日本語文字を入れる方法