ImageMagickを利用して、円形に画像を切り出す方法を教えてください。

(やりたい事)
・200x200等の正方形のjpeg画像から、内接する円形部分のみを取り出します。
・取り出した円形部分の周囲は、透過になるようなGIFを作成します。
・与えられる画像は、任意の画像です。(元の画像が円の特徴を持っているわけではない)
宜しくお願いします。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2006/09/09 16:23:08
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:hive7134 No.1

回答回数167ベストアンサー獲得回数16

ポイント35pt

少し手間のかかるやり方ですが

  1. 元画像の上に、円形にくりぬいた200×200のフレーム画像を合成し、いったんフレーム付き状態で出力
  2. フレーム付き画像のフレームの色を透過にする。

という手順ではいかがでしょうか?



コマンドラインでの具体的な操作は以下のようになります。


元画像を「base.jpg」

あらかじめ円形にくりぬいておいた200×200のフレーム画像(中心部分が赤色の円、周囲は白)を「circle.gif」とすると、

convert -transparent red circle.gif circle_t.gif
composite -gravity center circle_t.gif  base.jpg circled.bmp
convert -transparent white circled.bmp circled_t.gif

これで「circled_t.gif」として得られます。

id:mikan_iyokan

回答ありがとうございます。

早速試してみたのですが、フレームの色がbase.jpgに含まれる色の場合、円の内側にも透ける部分が出来てしまうと思うのですが、どうでしょか。

base.jpgに含まれない色が分かれば良いのですが・・・。

再回答もお待ちしています。

2006/09/08 20:35:35

その他の回答1件)

id:hive7134 No.1

回答回数167ベストアンサー獲得回数16ここでベストアンサー

ポイント35pt

少し手間のかかるやり方ですが

  1. 元画像の上に、円形にくりぬいた200×200のフレーム画像を合成し、いったんフレーム付き状態で出力
  2. フレーム付き画像のフレームの色を透過にする。

という手順ではいかがでしょうか?



コマンドラインでの具体的な操作は以下のようになります。


元画像を「base.jpg」

あらかじめ円形にくりぬいておいた200×200のフレーム画像(中心部分が赤色の円、周囲は白)を「circle.gif」とすると、

convert -transparent red circle.gif circle_t.gif
composite -gravity center circle_t.gif  base.jpg circled.bmp
convert -transparent white circled.bmp circled_t.gif

これで「circled_t.gif」として得られます。

id:mikan_iyokan

回答ありがとうございます。

早速試してみたのですが、フレームの色がbase.jpgに含まれる色の場合、円の内側にも透ける部分が出来てしまうと思うのですが、どうでしょか。

base.jpgに含まれない色が分かれば良いのですが・・・。

再回答もお待ちしています。

2006/09/08 20:35:35
id:hive7134 No.2

回答回数167ベストアンサー獲得回数16

ポイント35pt

元画像の白まで透過されてしまうことに言及するのを忘れていました^^;

回答が複数回にわたってしまい、すみません。


この場合はさらに一手間加えて、^^;

  • 元画像の白を限りなく白に近い色に置換してから、白の透過処理をする

というのはいかがでしょうか?

GIFは最大256色ですから、出力結果には白色の変化は現れません。



以下具体例

※限りなく白に近い色(例:RGB(254,255,255)など)で塗りつぶした200×200のbmp画像をnearwhite.bmpとします。

convert -transparent red circle.gif circle_t.gif
convert -transparent white base.jpg base_t.gif
composite base_t.gif nearwhilte.bmp base_w.bmp
composite -gravity center circle_t.gif base_w.bmp circled.bmp
convert -transparent white circled.bmp circled_t.gif

以上です。

色のうまい置換方法が見つからなかったので、かなり回りくどいですね^^;

id:mikan_iyokan

回答ありがとうございます。

きちんと円の中は透過させないようにしようとすると、結構手間がかかりますね。

参考にさせていただきます。

画像の色を簡単に置き換える方法は,また後日探してみます.ありがとうございました.

2006/09/09 16:22:05
  • id:mikan_iyokan
    ImageMagickで色の置き換えをする方法
    http://www.ecoop.net/memo/2006-07-24.html

    convert source.gif -fill dest_color -opaque src_color dest.jpg
    source.gif の、 src_color という色を dest_color という色に置き換えて dest.jpg として保存します。

    だそうです.
  • id:hive7134
    >mikan_iyokanさま
    アリガトウございます。参考になりました(笑)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません