Как сохранить захваченную подпись на компоненте SignaturePad в базе данных SQL Server

Как уже говорилось, как мы должны правильно сохранять захваченную подпись, используя компонент SignaturePad, в базу данных SQL Server? Что ж, это должно быть легко, учитывая, что метод GetImage(false), используемый компонентом, возвращает растровое изображение, а затем сжимает растровое изображение в JPEG и в байт массива с использованием потока. Затем байтовый массив должен быть сохранен непосредственно в базе данных SQL Server; однако проблема этого подхода состоит в том, что когда вы извлекаете изображение из базы данных, изображение становится черным. Это похоже на то, что штрихи никогда не фиксировались, забавно то, что цвет фона SignaturePad был установлен на Белый, а цвет обводки - Черный.

Xamarin.Android Button Обработчик события OnClick

var signature = this.SignatureView.GetImage(false); // This returns the Bitmap from SignaturePad.
var imageData = this.ImageToByteArray(signature); // This converts the Bitmap to byte[].

var result = this.SaveDataAsync(imageData); // Save the byte[] to the database.

Xamarin. Метод расширения Android

private byte[] ImageToByteArray(Bitmap image)
{
    if (image == null) return null;

    byte[] result;

    using (var stream = new MemoryStream())
    {
        image.Compress(CompressFormat.Jpeg, 100, stream);
        result = stream.ToArray();
        stream.Flush();
    }

    return result;
}

Это тот же подход, который мы использовали в iOS, но не работает в Android. Любые идеи или рабочие решения будут очень цениться.

Спасибо!

Скопировано с Xamarin Forum - Раздел компонентов

1 ответ

Ладно, думаю, я нашел решение этой проблемы, которое было описано в этой теме Signature Pad for Xamarin.Forms. Я не уверен, почему мы должны указывать цвета в методе GetImage(), в то время как свойства для цветов Stroke и Background уже были указаны. Ну, я думаю, что цвета, необходимые для рисования изображения, не совпадают с цветом свойств.

Другие вопросы по тегам