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

スポンサーサイト

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

IronPython: Bitmapオブジェクトの画像の色をいじる

                
To manipulate colors of image of Bitmap object.

 WPFアプリケーションで画像の色をいじりたかった。GraphicsオブジェクトのDrawImageメソッドを使えば行列演算でそれが可能となるようだ(参考:MSDN Library)。これまでMATLABから始まって、Pythonの標準付属の画像処理モジュールや、GTK付属のcairoを使ってきた。それらで色をいじるのに行列式を書いた覚えがイマイチない。だけど.NETでは行列を一つ書けば、それでRGBの三色を一気に処理できてコンパクトなので、これはいいやり方だなと感じた。IronPythonでは以下のように。

bmp = Bitmap(self.width, self.height)
g = Graphics.FromImage(bmp)
g.CopyFromScreen(x, y, 0, 0, Size(width, height))
imageAttributes = ImageAttributes()
colorMatrix = ColorMatrix(((1, 0, 0, 0, 0),
(0, 1, 0, 0, 0),
(0, 0, 1, 0, 0),
(0, 0, 0, 1, 0),
(0, 0, 0, 0, 1),))
imageAttributes.SetColorMatrix(
colorMatrix,
ColorMatrixFlag.Default,
ColorAdjustType.Bitmap)
g.DrawImage(bmp,
Rectangle(0, 0, self.width, self.height), # destination rectangle
0, 0, # upper-left corner of source rectangle
self.width, # width of source rectangle
self.height, # height of source rectangle
GraphicsUnit.Pixel,
imageAttributes)
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

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

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