2017-05-30 10 views
1

私はスクリーンをキャプチャしようとしていて、スクリーンショットをbase64イメージとして出力しようとしていますが、使用可能なbase64イメージを自分のコードから取り出せないようです。ビットマップから変換するとC#使用できなくなるbase64

public static Bitmap bitmap; 
    public static string base64; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    private void button1_Click(object sender, EventArgs e) 
    { 
     CaptureScreen(); 
     Graphics graphics = Graphics.FromImage(bitmap as Image); 
     graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size); 
     pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; 
     pictureBox1.Image = bitmap; 
     richTextBox1.Text = base64; 
    } 
    public static string CaptureScreen() 
    { 
     bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); 
     Bitmap bImage = bitmap; 
     System.IO.MemoryStream ms = new System.IO.MemoryStream(); 
     bImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
     byte[] byteImage = ms.ToArray(); 
     base64 = Convert.ToBase64String(byteImage); 
     return base64; 
    } 

テストするとき、私はthis出力を取得し、それは、これを表示したり、あまりにもthis画像を閉じる必要があります。

+0

:文字通りにそれを変更してみてください

bImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 

graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size); 

が前にラインをを発生する:あなたは線を移動する必要があります高さ...? –

+0

は、graphics.CopyFromScreen(0、0、0、0、bitmap.Size)で意味します。これは、結果がどのように表示されるかを表示するためです。 –

+0

の開発用ですが、空のビットマップを割り当てて何も書いておらず、それを保存しています。黒(または白)の矩形が表示されるはずです。あなたは何を見ますか?それは私に黒い矩形のように見える... –

答えて

1

ここでの問題はタイミングです。

の前にbase-64 を作成すると、画面に画像がコピーされます。あなたが0の幅と0をコピーしている

graphics.CopyFromScreen(0, 0, 0, 0, bImage.Size); 
bImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
+0

非常にありがとうMarc! :D –

関連する問題