Как сохранить захваченную подпись на компоненте 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 уже были указаны. Ну, я думаю, что цвета, необходимые для рисования изображения, не совпадают с цветом свойств.