2018年12月12日水曜日

WxPythonでStaticBitmapを使って、画像を表示して見ました。

キャプチャ


参考サイト

white wheelsのメモ
http://d.hatena.ne.jp/white_wheels/20100313/p3

wxPython GUI to Display a JPEG (.jpg) Image
https://www.daniweb.com/programming/software-development/code/216581/wxpython-gui-to-display-a-jpeg-jpg-image


画像表示の流れ

jpg1 = wx.Image(imageFile, wx.BITMAP_TYPE_ANY) 
で画像イメージ?を作成し
wx.StaticBitmap(self,-1, self.jpg1, (100 , 100), self.GetClientSize())
で画像を表示します。


補足説明(機械翻訳)

wx.Image(self、name、type = BITMAP_TYPE_ANY、index = -1)

 ファイルからイメージを作成します。 
 
 パラメーター: 
   name ( string ) - イメージをロードする元のファイルの名前。 

   タイプ ( BitmapType ) - 次のいずれかです。 
   wx.BITMAP_TYPE_BMP :Windowsビットマップファイルを読み込みます。 
   wx.BITMAP_TYPE_GIF : GIFビットマップファイルを読み込みます。 
   wx.BITMAP_TYPE_JPEG : JPEGビットマップファイルを読み込みます。 
   wx.BITMAP_TYPE_PNG : PNGビットマップファイルを読み込みます。 
   wx.BITMAP_TYPE_PCX : PCXビットマップファイルを読み込みます。 
   wx.BITMAP_TYPE_PNM : PNMビットマップファイルを読み込みます。 
   wx.BITMAP_TYPE_TIFF : TIFFビットマップファイルを読み込みます。 
   wx.BITMAP_TYPE_TGA : TGAビットマップファイルを読み込みます。 
   wx.BITMAP_TYPE_XPM :XPMビットマップファイルを読み込みます。 
   wx.BITMAP_TYPE_ICO :Windowsアイコンファイル( ICO )を読み込みます。 
   wx.BITMAP_TYPE_CUR :Windowsカーソルファイル( CUR )をロードします。 
   wx.BITMAP_TYPE_ANI :Windowsアニメーションカーソルファイル( ANI )をロードします。 
   wx.BITMAP_TYPE_ANY :フォーマットを自動検出しようとします。 

     ここでビットマップファイルと書いてあったが、拡張子が   bmpがビットマップファイルの
 ことだと思うが、それだと  意味が通じない。ここでは単に画像ファイルと解釈しよう。     
 
   index ( int ) - 
 画像ファイルに複数の画像が含まれている  場合に読み込む画像のインデックスです。  
 これは、 GIF 、 ICO 、およびTIFFハンドラでのみ使用されます。 デフォルト   値(-1)は、
 「デフォルト画像を選択する」ことを意味し、GIFおよびTIFFハンドラによって最初の画像
 (index = 0)とし   て解釈され、 ICOハンドラによって最大で最もカラフルなものとして
 解釈されます。 

ConvertToBitmap( self 、 depth = -1  

wx.Imegeで作成されたイメージ?をbimapに変換それをしないと画像表示できないみたい。

StaticBitmap(self、parent、id = ID_ANY、ビットマップ= NullBitmap、pos = DefaultPosition、size = DefaultSize、style = 0、name = StaticBitmapNameStr)

 以下は引数の説明
 以下の説明でウィンドウとあるのは画像の間違いと思われる(機械翻訳のため)
 parent ( wx.Window ) - 親ウィンドウ。 NoneはありNone 。
 id ( wx.WindowID ) - コントロール識別子。 -1の値はデフォルト値を示します。
 ビットマップ ( wx.Bitmap ) -
 pos ( wx.Point ) - ウィンドウの位置。
 size ( wx.Size ) - ウィンドウサイズ。
 style ( long ) - ウィンドウスタイル。 wx.StaticBitmapを参照してください。
 name ( string ) - ウィンドウ名。
 
 画像を表示する機能を持ったコントロール (ウィンドウの一種)であり、他のコントロール
と同じように扱うことができる 。
 wx.Bitmap を渡すだけで描画してくれるので使いやすいが、細かい制御は効かない 
 

wx.PaintDC

 デバイスコンテキストという、ウィンドウ内部に実際にグラフィックを描画する
 ためのローレベルな API である 
 単体で使うことは出来ず、まず描画対象のウィンドウを用意し、そこからデバイス 
 コンテキストを取得して使う 
 ローレベルなためコード量は増えるし、簡単には扱えないが、自由度は高い 
  (引用です。引用元https://teratail.com/questions/75951

コード

E:\MyBackups\goolgedrive\myprg_main\python_my_prg\wxpython\image_paint\gazou_hyouzi_image.py


import wx

class Panel1(wx.Panel):
def __init__(self, parent, id):
wx.Panel.__init__(self,parent, id)
try:
imageFile= 'image.gif'
#jpgイメージからファイル(代替簡単な)方法をロードし、表示される
#実際に読み込むことができます。jpgを。pngを。またはbmp。gifファイルを
jpg1 = wx.Image(imageFile, wx.BITMAP_TYPE_ANY)
#jpg1 = jpg1.Scale(150,150, wx.IMAGE_QUALITY_HIGH)
self.jpg1 = jpg1.ConvertToBitmap()
except IOError:
print "Image file %s not found" % imageFile
raiseSystemExit

#左クリックで画像表示
self.Bind(wx.EVT_LEFT_DOWN, self.paintGazou)

def paintGazou(self, event):
#ビットマップは 左上隅から..、
#wx.StaticBitmap(self,-1, self.jpg1, 
# (10 + self.jpg1.GetWidth(), 5))
#(0, 5) 表示位置 GetClientSizeで元画像の大きさで表示される
wx.StaticBitmap(self,-1, self.jpg1, 
(100 , 100), self.GetClientSize())



app= wx.PySimpleApp()
#作成ウィンドウ/フレーム、親-1はIDがデフォルト 
#画像の大きなフレームのサイズを増やす 
frame1= wx.Frame(None, -1, "An image on a panel", size = (600, 500))
Panel1(frame1,-1)
frame1.Show(1)
app.MainLoop()

0 件のコメント:

コメントを投稿

About

参加ユーザー

連絡フォーム

名前

メール *

メッセージ *

ブログ アーカイブ

ページ

Featured Posts