0
1

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 1 year has passed since last update.

Notionのアイコン画像を正方形に編集するWEBアプリケーションを作った

Last updated at Posted at 2022-04-26

はじめに: 解決したいこと

みなさん、Notion 使ってますか?
Notionでページを作成していたところ、アイコン画像を設定するときに困ったことが起きました。
それは、長方形の画像をアイコンとしてアップロードすると、下の写真のように画像が見切れてしまうということです。

この記事では、Streamlit を使ってNotionのアイコン用に画像を正方形に加工してくれるWEBアプリケーションを作成したので紹介します。
作成したWEBアプリは こちら から使用できます。
作成したプログラムは こちら
Streamlitの基本的な使い方については、この記事 で紹介しています。

ソリューション

  • OpenCVを使って長方形の画像を正方形に加工
  • ( 長辺と短辺の差の半分の長さ ) × ( 長辺 ) の長方形を両側から結合
  • Streamlitを使って画像をアップロードすると上記の処理を行ってくれるWEBアプリケーションを作成

実装

コード全体は こちら から。

まず画像をアップロードして、それを読み込みます。

st.markdown('# Notion Icon Maker')
file = st.file_uploader('画像をアップロードしてください', type=['jpg', 'jpeg', 'png'])
if file:
    st.markdown(f'{file.name} をアップロードしました')
    img = Image.open(file)
    st.image(img)

次に画像を正方形に加工します。
アップロードした画像は Pillow の形式で読み込まれているため、画像加工の前に OpenCV 形式に変換します。
また、正方形にするために付け足した部分は透過させる必要があります。
そこで、画像のチャンネル BGRA のうち、Aの値を0にすることで透過画像を作成することができます。
作成した透過画像の中央に、元画像を配置して完成です。

def make_square(image):
    h, w = image.shape[:2]
    a = max(h, w)
    blank = np.full((a, a, 4), 0, dtype=np.uint8)
    blank[int(a / 2 - h / 2):int(a / 2 - h / 2) + h,
          int(a / 2 - w / 2):int(a / 2 - w / 2) + w] = image
    return blank

cv_img = pil2cv(img)
dst = make_square(cv_img)

最後に

作成したWEBアプリケーションを使うことで、下のようにいい感じにアイコンを設定できました。
Notion のアイコン設定で困ったら使ってみてください。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?