2

私は基本的にVisualStudio2010 .NET 4.0でソフトウェアを開発しており、PCからスクリーンショットをキャプチャして、ネットワーク経由で別のPCに送信しています。ビットマップを直接送信できないため、文字列に変換する必要があります。私はたくさんのインターネット検索をしましたが、解決策を見つけることができません。:(

このコードはstackoverflow自体で見つかりました。しかし、それは機能しません。文字列(画像から変換)を印刷しようとしましたが、プログラムはその行が存在しないように動作します。MessageBox.Show(String);を使用しました。しかし、メッセージボックスさえポップアップしません!誰か助けてもらえますか?私は立ち往生しています!よろしくお願いします:)(Y)

bitmapString = null;       // Conversion from image to string
MemoryStream memoryStream = new MemoryStream();
bmpScreenshot.Save(memoryStream, ImageFormat.Png);
byte[] bitmapBytes = memoryStream.GetBuffer();
bitmapString = Convert.ToBase64String(bitmapBytes,Base64FormattingOptions.InsertLineBreaks); // Conversion from image to string end

Image img = null;                           //Conversion from string to image
byte[] bitmapBytes = Convert.FromBase64String(rob);
MemoryStream memoryStream = new MemoryStream(bitmapBytes);
img = Image.FromStream(memoryStream);   //Conversion from string to image end
4

3 に答える 3

4

それをバイト配列に変換してみてください:

public static byte[] ImageToByteArray(Image img)
{
    byte[] byteArray = new byte[0];
    using (MemoryStream stream = new MemoryStream())
    {
        img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
        stream.Close();

        byteArray = stream.ToArray();
    }
    return byteArray;
}

BitmapオブジェクトをImageオブジェクトにキャストするだけでよいと思います。したがってImage img = (Image)myBitmap;、それを上記のメソッドに渡します。

于 2013-01-18T19:39:29.443 に答える
0

なぜ文字列である必要があるのですか?ネットワーク経由で送信するためにどのような方法を使用していますか?Webサービス?直接ソケット?

ただし、送信方法に関係なく、バイト配列に変換してから、その配列をネットワーク経由で渡すのが最善の方法です。

これを行う方法のコードが必要な場合は、C#を使用したソケットを介した画像の送受信など、SOに関する同様の質問を確認してください。

于 2013-01-18T19:41:08.923 に答える
0

個々のバイトを直接送信できますが、本当に文字列が必要な場合は、 base64と呼ばれる形式でエンコードできます。この形式へのエンコードとこの形式からのデコードに関するmsdnのドキュメントは次のとおりです。彼の回答に投稿されたコード@AdamPlocherを使用して、画像をバイト配列に変換できます(彼がそれを行うことから私を救ったので私は+1しました;))

于 2013-01-18T19:41:41.907 に答える