9
11

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.

適切な背景色を自動で求める

Last updated at Posted at 2014-03-09

ユーザが任意の画像をアップロードでき、その画像を固定サイズの領域に入れる場合、アスペクト比が一致しません。その場合、固定サイズの領域に画像に合う背景色を入れたいケースがあります。

(iTunesのアルバム一覧からアルバムを選択した時に表示されるアレと似たような話です。)

テスト画像

白背景の領域に配置したケース

test1.png

正方形の領域に画像を設定すると、アスペクト比が合わないため、当然ながら上下に白い帯が出ます。

画像に合わせた背景色の領域に配置したケース

test2.png

画像によりますが、白背景よりも違和感が少ないです。

求め方

以下のコマンドを実行します。input imageに対象のファイル名を指定します。

convert <input image> -resize 200x200! +dither -colors 16 png:- | convert - -alpha set -region 198x198+1+1 -alpha transparent +region png:- | convert - -format %c histogram:info:- | grep ",255)" | sort -r | head -n 1 | grep -E -o "#[0-9A-F]+"

結果は

# 001B65

のように出力されます。

何をやっているか

画像を16色に減色し、サイズを200x200にリサイズします。そして(1, 1)から(198, 198)までのピクセルを全て透明にします。4辺のピクセルだけが残るため、その4辺のピクセルのヒストグラムを取得して一番多く使われている色を抽出しています。

リサイズする際のサイズや、減色する際の色数を調整すると、もっと好みに合わせられるかもしれません。上記例ではリサイズ時にアスペクト比が変わっているため、縦のピクセルと横のピクセルで重みを変えないと公平な色の算出にはなっていません。

9
11
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
9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?