ページ 11

Cairommによるpng画像ファイルからの画素抽出について

Posted: 2013年9月01日(日) 21:29
by chibago
皆様、お久しぶりです。
chibagoです。

png画像ファイルから画素(RGBA)データをpixcel毎に抽出し演算処理
をすることを考えております。

ツールとしては、画像描画に慣れているCairommにしたいと思っております。
ファイルに書き出すのは慣れているのですが、ファイルから読み込んだことがなく、
調べてもよく理解できませんでしたので、もしお使いの方がいらっしゃりましたら
ご指導いただければ幸いです。

サーフェースとコンテキストは以下のように簡単に取得できます。

コード:

      Cairo::RefPtr< Cairo::ImageSurface > surface
	   = Cairo::ImageSurface::create_from_png(file_path);

     Cairo::RefPtr< Cairo::Context > context;
         context = Cairo::Context::create(surface);
さらに必要になると思われる、画素数ですが、サーフェースの関数の
get_width,get_heightで取得できます。肝心の画素データですが、
サーフェースのget_dataはサーフェースのポインタを示してるだけの
ようですし、コンテキストのほうにget_matrixというものがありますが、
これが該当しているのか分かりませんし、また、取得に際してもmatrix
の仕様を熟知しなければならないと思います。

また、コンテキストのほうにget_source()というものがありますが、
これでよいのかどうかも不明です。
double rgba[] get_source(x,y)のような使いやすい形のものがあれば
よいのですが、よくわかりません。

どのようにして画素を取得するものなのでしょうか。

Re: Cairommによるpng画像ファイルからの画素抽出について

Posted: 2013年9月01日(日) 21:49
by みけCAT
「Cairomm 画素 取得」でググったらこのページが見つかりました。
http://www.comp.sd.keio.ac.jp/Members/y ... 6e63cf753b
予想ですが、A(透明度)の要素は、このページのコードで言うと*(p+y*stride+x*step+3)でしょうか?

Re: Cairommによるpng画像ファイルからの画素抽出について

Posted: 2013年9月01日(日) 22:13
by chibago
みけCAT さん
ありがとうございました。
さっそくやってみます。