1

次のコードを使用して署名パッドから署名を取得していますが、値はありません。

try {
            var signature = padView.GetImage (Acr.XamForms.SignaturePad.ImageFormatType.Png);
            using (BinaryReader br = new BinaryReader (signature)) {
                var result = br.ReadBytes ((int)signature.Length);

            }

        } catch (Exception ex) {
            //              Helper_ErrorHandling.SendErrorToServer (ex);
        }

私は間違っていますか?また、これをbase64文字列に変換するにはどうすればよいですか?

4

2 に答える 2

2

StreamXamarin Forms Signature Pad にはあまり詳しくありませんが、aを base64 文字列に変換する方法を探している場合は、次のようにしてください。

[...]
string base64String;
using (var memoryStream = new MemoryStream()) 
{ 
    signature.CopyTo( memoryStream ); 
    var byteArray = memoryStream.ToArray();
    base64String = Convert.ToBase64String( byteArray );
} 

signature編集:すでにコピーされているかどうかを確認すると、ほとんどの場合コピーをスキップできますMemoryStream...

[...]
string base64String;
var signatureMemoryStream = signature as MemoryStream;
if (signatureMemoryStream == null)
{
    signatureMemoryStream = new MemoryStream();
    signature.CopyTo( signatureMemoryStream );
}
var byteArray = signatureMemoryStream.ToArray();
base64String = Convert.ToBase64String( byteArray );
于 2016-06-03T12:08:24.457 に答える
0

最新の PCL 準拠の Xamarin パッケージを使用する:

acr-xamarin-フォーム

この方法は魔法のように機能します。

private string ConvertSignatureToBase64()
    {
        try
        {
            byte[] data;
            if(Device.OS == TargetPlatform.iOS)
            {
                var img = SignaturePad.GetImage(Acr.XamForms.SignaturePad.ImageFormatType.Jpg);
                var signatureMemoryStream = new MemoryStream();
                img.CopyTo(signatureMemoryStream);
                data = signatureMemoryStream.ToArray();
            }
            else
            {
                var img = SignaturePad.GetImage(Acr.XamForms.SignaturePad.ImageFormatType.Jpg);
                var signatureMemoryStream = (MemoryStream)img;
                data = signatureMemoryStream.ToArray();
            }

            return Convert.ToBase64String(data);      
        }
        catch(Exception ex)
        {
            return ex.ToString();
        }
    }
于 2017-05-04T18:53:46.490 に答える