1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

漢字を画像として出力【備忘録】

Posted at

メモ

ついつい、調べてしまうので、備忘録として。(適宜、関数化を推奨)

環境

目標

  • 漢字一文字を描画した画像ファイルが欲しい

入力

  • 漢字(または 対応する ユニコード: UTF-8)
  • フォントファイル
  • 文字の色
  • 描画サイズ
  • 背景色
  • 背景画像サイズ

出力

  • 画像ファイル名(今回はpng形式とした)

実装

import cv2
import numpy as np
from PIL import ImageFont, ImageDraw, Image

# 文字の準備
font_path = '/System/Library/Fonts/AquaKana.ttc'
color_char = (255,0,0)    # RGB
size_char = 16

# 背景の準備
spec_canvas = (18,18,3)   # サイズと色数

# 出力ファイル名
o_filename = "kanji_trial.png"


# キャンバスの準備
imageArray = np.zeros(spec_canvas, np.uint8)
imageArray += 255         # 力技。背景を白色に(numpy特有)

pil_image = Image.fromarray(imageArray)  # ImageDrawへの入力を可能な形式に変換
canvas = ImageDraw.Draw(pil_image)       # 描画準備完了

# 文字の準備
## フォントの指定 (ファイル、取扱注意)
font = ImageFont.truetype(font_path, size_char)

## 文字の指定 (直接指定)  ※ ユニコードによる指定の方法は後述 *
canvas.text((1,1), u"永", fill=color, font=font)

# 書き出し用に変換
cv_rgb = np.asarray(pil_image)
cv_bgr = cv2.cvtColor(cv_rgb,cv2.COLOR_RGB2BGR)

cv2.imwrite(o_filename, cv_bgr)

UTF-8で指定したい場合

# "永" に対応する UTF-8のコード値が "u6C38"
canvas.text((1,1), u’¥u6C38’, fill=(0, 0, 0), font=font)

出力結果例

ei_wb.png

やったね!

参考

「常用漢字の画像とか、ないんだろうか」というツイッターをもとに、このエントリを書きました。
ちなみに、常用漢字に対応するUTF-8の一覧は、以下にあったりします:
http://x0213.org/joyo-kanji-code/

--

End of This Document: 最後までありがとうございました
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?