クロノス・クラウン - 記事検索

おすすめ
自作の本やゲーム他を販売
便利なWebアプリが多数
ソフトウェア
めもりーくりーなー Winのメモリーを掃除
Novel Supporter 小説推敲補助ソフト
PCソフト まとめ
Webサービス
Kindle Unlimited マンガまとめ 巻数の多いマンガを集計
ゲームブック
闇の聖杯の儀式 電書のゲームブック
ゲーム
Little Land War... Win向けSRPG
Little Bit War Switch向け高速RTS
TinyWar... 1面数分の8bit風RTS
EX リバーシ 変形盤面、盤面多数
no link
2009年08月17日 15:19:52
 ちょっと前に少しはまったことです。

 ネットで情報を調べて、そのものズバリの情報があまりなかったので、同じことではまる人がいそうなのでメモしておきます。

 perlの画像処理でよく使う「ImageMagick」というライブラリがあります。この「ImageMagick」には、領域の切り出しに使う「Crop」という命令があります。

 この「Crop」ですが、日本語に訳すと、「切り取り」とか「切り出し」という意味になります。写真などをトリミングすることも「Crop」と言います。

 この「Crop」による、内部処理と原点の扱いについて、まとめておきます。

 以下、ImageMagickの6.2.8での挙動です。



● 「Crop」の挙動

 この「Crop」を、画像を示す変数「$img」に対して、以下のように使ったとします。

$img->Crop(width=>100, height=>150, x=>10, y=>20);

 すると、この「$img」は、横100、高さ150の画像として、以後扱えます。

 この時、注意しなければならないのは、この「Crop」を行った画像の原点は、「横100、高さ150の領域の左上」ではないということです。

 「横100、高さ150の領域の左上」に対して「X方向-10、Y方向-20」の位置が原点になります。

 つまり、元の画像の原点の位置が、「Crop」後も維持されます。

 図で描くと、以下のような感じです。

元の画像(原点はここのまま)

┏━━━━━┓
┃┌───┐┃←Cropした画像
┃│絵絵絵│┃
┃└───┘┃
┗━━━━━┛



● 「Crop」の内部処理

 なぜならば、この「Crop」という命令は、画像の画素データを、新しく切り出す命令ではないからです。

 「Crop」は、画像描画の際の、「処理領域を決めるだけ」の命令だからです。この命令は、元の画像にマスクを掛けて、その内部だけを、他の画像のように振舞わせます。

 「Crop」は、元の画像を維持したまま、「Crop領域」を作成します。



● 「Crop」の内部処理がよく分かるケース

 この「Crop」の内部処理の様子がよく分かるのは、「Crop」した画像を再度「Crop」した場合です。

 以下のように、「Crop」したあとに、再度「Crop」を行います。

$img->Crop(width=>100, height=>150, x=>10, y=>20);
$img->Crop(width=>100, height=>150, x=>60, y=>20);

 画像は欠けずに、そのまま新たな「Crop」領域が作成されます。

 なので、上記のような内部処理を行っているのだと推測できます。



● まとめ

 「Crop」の内部処理と、原点維持の挙動を理解していないと、たまに面倒な事態に出会います。

 ネットにあまり情報がないようでしたので、簡単にまとめておくことにしました。
最新20件 (全て見る)

オススメ電書 (全て見る

動画講座 (全て見る

サイト目次

おすすめ

PCソフト/Webアプリ

ゲーム

マンガ

記事

柳井の同人活動

開発

携帯・スマホ

アナログ・ゲーム

Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2024 Cronus Crown (c)1997-2024 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
個人情報の取り扱い、利用者情報の外部送信について