web-dev-qa-db-ja.com

UIImageをバイト配列に変換する

UIImageをバイト配列に変換する必要があります。 XamarinのVisualStudioプラグインを使用してiOSアプリケーションを作成しています。

以下のコードのビットは画像を取得しますが、UIImageではなくバイト配列としてサービススタックを介して送信する必要があります。

        var signatureView = new SignaturePad.SignaturePadView(new RectangleF(10, 660, 300, 150));
        signatureView.BackgroundColor = UIColor.White;
        this.View.AddSubview(signatureView);
        UIImage signatureImage = signatureView.GetImage();
15
Yahiko Kikikoto

ChrisNTR から恥知らずに盗まれた

using (NSData imageData = image.AsPNG()) {
  Byte[] myByteArray = new Byte[imageData.Length];
  System.Runtime.InteropServices.Marshal.Copy(imageData.Bytes, myByteArray, 0, Convert.ToInt32(imageData.Length));
}
26
Jason

ServiceStack APIを確認してから長い時間が経ちましたが、可能であれば、同じデータの別のコピーを作成する必要があるため、_byte[]_は避けてください。多くの場合、それは問題ではありませんが、画像はしばしば巨大です。

例えば。 _System.IO.Stream_を受け入れるオーバーロードがある場合は、image.AsPNG ().AsStream ()を使用して、オーバーヘッドを回避します:-)

15
poupou
Stream pst =   img.AsPNG().AsStream();
10
Hâluk Yilmaz