玄関へお回り下さい。
画像の保存・コピー・ペースト他 (8個)             (SNo.091)

1.BMPファイルをJPG形式で保存
2.BMPファイルをメタファイル形式で保存
3.WEB上の画像ファイルを直接PictureBoxに表示する 
4.PictureBoxの画像をクリップボードにコピーする
5.クリップボードの画像をPictureBoxに貼り付ける
6.画像ファイルの幅と高さを取得 (3)
使用コントロール Button1 〜 Button5  Label1  PictureBox1
その他条件 WindowsXP(Vista) Visual Basic 2005(VB2008)
PictureBox1上に画像ファイル(*.bmp)を読み込み表示しておいて下さい。 
1.BMPファイルをJPG形式で保存
2.BMPファイルをメタファイル形式で保存
 
Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click
'PictureBoxの表示しているBMPファイルをJPG形式で保存
    'PictureBoxになにも表示していないと保存時エラーとなるのでチェック
    If Not (PictureBox1.Image Is NothingThen
        PictureBox1.Image.Save("..\test01.jpg", Imaging.ImageFormat.Jpeg)
    End If
'PictureBoxの表示しているBMPファイルをwmf形式で保存
    PictureBox1.Image.Save("..\test01.wmf", Imaging.ImageFormat.Wmf)
End Sub

3.WEB上の画像ファイルを直接PictureBoxに表示する 
 
Private Sub Button2_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button2.Click
'WEB上の画像ファイルを直接PictureBoxにダウンロードして表示
    '取得するWEB上の画像ファイルのURL
    Dim url As String = "http://hanatyan.sakura.ne.jp/toppicture.gif"
    'WebClient クラスの新しいインスタンスを作成します
    Dim wc As New System.Net.WebClient
    '指定したURLを持つリソースからダウンロードした
    'データの読み取り可能ストリームを開きます
    Dim st As System.IO.Stream = wc.OpenRead(url)
    '指定したデータストリームから Image オブジェクトを作成します
    PictureBox1.Image = Image.FromStream(st)
    '現在のストリームを閉じリソースを解放します
    st.Close()
End Sub
 
4.PictureBoxの画像をクリップボードにコピーする
 
Private Sub Button3_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button3.Click
'PictureBoxの画像をクリップボードにコピーする
    With PictureBox1
        'PictureBox1に画像が表示されていれば
        If Not .Image Is Nothing Then
            'データをシステム クリップボードに貼り付けます
            Clipboard.SetDataObject(.Image, True)
            'コピーできたので一旦PictureBox1の画像を消去
            .Image = Nothing
        End If
    End With
End Sub
 
5.クリップボードの画像をPictureBoxに貼り付ける
 
Private Sub Button4_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button4.Click
'クリップボードの画像をPictureBoxに貼り付ける
    ''現在システム クリップボードにあるデータを取得します
    Dim iData As IDataObject = Clipboard.GetDataObject()
    'クリップボードにBMPファイルがあれば
    If iData.GetDataPresent(DataFormats.Bitmap) Then
        'PictureBox1にクリップボードの画像を貼り付け
        PictureBox1.Image = CType(iData.GetData(DataFormats.Bitmap), Image)
    End If

'--------- その他の形式の場合 -------------------------
    If iData.GetDataPresent(DataFormats.EnhancedMetafile) Then
        MsgBox("EnhancedMetafile ファイルはあります")
    End If

    If iData.GetDataPresent(DataFormats.Text) Then
        MsgBox("Text ファイルはあります")
    End If
End Sub
 
6.画像ファイルの幅と高さを取得 (3)
 
Private Sub Button5_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button5.Click
'画像ファイルの幅及び高さを取得する
    Dim picWid, picHei As Integer
    Dim fs = New System.IO.FileStream("..\..\test.bmp", _
                        System.IO.FileMode.Open, System.IO.FileAccess.Read)
    picWid = System.Drawing.Image.FromStream(fs).Width
    picHei = System.Drawing.Image.FromStream(fs).Height
    fs.Close()
    Label1.Text = "幅 : " & picWid & "   高さ : " & picHei & " ピクセル"

    '又は下記でも取得できますがファイルがロックされてしまいますので注意して下さい。
    ''画像ファイルの幅及び高さを取得する
    Dim bm As Bitmap = New Bitmap("..\..\test.bmp")
    Debug.WriteLine(bm.Width)
    Debug.WriteLine(bm.Height)

    ''画像ファイルの幅及び高さを取得する
    Dim ImgWidth, ImgHeight As Integer
    ImgWidth = Image.FromFile("..\..\test.bmp").Width()
    ImgHeight = Image.FromFile("..\..\test.bmp").Height()
    Debug.WriteLine(ImgWidth & "  " & ImgHeight)
End Sub
 
  






2004/05/09
2005/10/13


VBレスキュー(花ちゃん)
VB.NET2003  VB2005