主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Pythonでの画像オブジェクト

                
tags:
 かつてMATLABを使っていたのを思い出すと、画像を扱う時にはあれがすごくシンプルだったのだと思う、Pythonと比べると。MATLABでは画像は一貫してただの数値の行列や配列だった。Pythonに触れてみたら、PILで使われるImageオブジェクト、PyGTKで使われるImageオブジェクト、Pixbuf、CairoSurface、OpenCVで使われるcvMat、iplImageなどなど画像を扱うためのオブジェクトは多岐にわたる。使用するモジュールに合わせた画像オブジェクトに変換しなければならぬ。ある意味非常に手間。

 愚痴ばかりを言ってはいられない。今回はPILのImageオブジェクトを、PyGTKで使えるCairoSurfaceにする。たいていの画像オブジェクトでは、画像は8bit値として文字列などに格納されている”\x00\x00\x00\x00…(RGBARGBARGBA…)”。これはPILのImageオブジェクトではtostringメソッドで得ることができて、CairoSurfaceオブジェクトではget_dataメソッドで扱える。ということでそれらを使う。
import ImageGrab
import cairo
import gtk

x=5
y=5
width=3
height=3
screen_cap = ImageGrab.grab((x, y, x+width, y+height))
screen_cap.putalpha(256)
cairo_surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
cairo_surface.get_data()[:] = screen_cap.tostring()
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。