OpenCV・PILを使ってブログアイコン(favicon)を作ってみた。
前回、ブログアイコンを作るためにOpenCVをインストールしました。
今回は実際にブログアイコンを作ってみました。
最新版(2018/12/26)は以下の記事参照
www.kinacon-blog.work
【ブログアイコンについては以下】
ブログアイコン(favicon)を高精細ディスプレイに対応するなど、見やすく表示されるようにしました - はてなブログ開発ブログ
ブログアイコンを作るに当たって、問題が発覚しました。
問題
- OpenCVでひらがなの描画ができなかった
- ひらがなの良いフォントがなかった
解決方法
- PIL(最初から入ってました)を使用する
- フリーの日本語フォントをダウンロードする
コード
PILで日本語を入力するところは以下のサイト参考にしました。
【OpenCV】【Python】画像上に日本語のテキストを描画 - Qiita
ブログアイコンのサイズは64×64が最大らしいのでこのサイズで作りました。
スマートフォン(iPhone、Android)のホーム画面の
ショートカットは192×192になるので
結局、192×192にしておけばよいのかな?
わたしは、スマホは別にいいので今回は64×64で作りました。
(cv2.resizeでサイズは変えられる)
# -*- coding: utf-8 -*- import cv2 import numpy as np from PIL import ImageFont, ImageDraw, Image #色はBGRで設定する def put_jtext(bgr_img, text, point, font_size, color): # 日本語フォントを画像に描画する font_path = "/home/kina/genjyuugothic-l/GenJyuuGothicL-Bold.ttf" font = ImageFont.truetype(font_path, font_size) #PILはRGBで処理 color_rgb = color[-1::-1] rgb_img = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2RGB) pil_img = Image.fromarray(rgb_img) draw = ImageDraw.Draw(pil_img) draw.text(point, text, fill=color_rgb, font=font) rgb_img = np.asarray(pil_img) bgr_img = cv2.cvtColor(rgb_img, cv2.COLOR_RGB2BGR) return bgr_img # ベース画像を作成 width = 360 height = 360 base_img = np.zeros((height, width, 3), np.uint8) # デザイン # 背景を黄色にする color = (0,255,255); # 黃 base_img[:] = tuple(color) # 文字を書く text1 = u"きな" text2 = u"こ" point1 = (width/2-140,height/2-140) point2 = (width/2-70,height/2-20) red = (0, 0, 255) #赤 font_size = 140 dst_img1 = put_jtext(base_img, text1, point1, font_size, red) dst_img2 = put_jtext(dst_img1, text2, point2, font_size, red) # 円を書く cv2.circle(dst_img2, (width/2, height/2), 160, red, 20) # リサイズする size = (64,64) dst64 = cv2.resize(dst_img2,size) cv2.imwrite('favicon_64.jpg', dst64)
はてなブログでブログアイコンコンを設定
- Settings を開く
- Blogaiconに参照ボタンで画像を設定
- 左下のUpdateをクリック
以上。
詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識
- 作者: Gary Bradski,Adrian Kaehler,松田晃一,小沼千絵,永田雅人,花形理
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/05/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る