Итак, я делаю приложение Xamarin.Forms. У меня есть StackLayout, из которого я делаю снимок (только элемент, а не весь экран.)
Это интерфейс:
public interface IViewSnapShot
{
Task<byte[]> CaptureAsync(Xamarin.Forms.View view);
}
это событие:
private async Task SavePic_ClickedAsync(object sender, EventArgs e)
{
var imageByte = await DependencyService.Get<IViewSnapShot>().CaptureAsync(BlueprintSnapshot);
}
и это зависит от платформы Android:
public class MakeViewSnapshot : IViewSnapShot
{
Task<byte[]> IViewSnapShot.CaptureAsync(Xamarin.Forms.View view)
{
var nativeView = view.GetRenderer().View;
var wasDrawingCacheEnabled = nativeView.DrawingCacheEnabled;
nativeView.DrawingCacheEnabled = true;
nativeView.BuildDrawingCache(false);
Bitmap bitmap = nativeView.GetDrawingCache(false);
// TODO: Save bitmap and return filepath
nativeView.DrawingCacheEnabled = wasDrawingCacheEnabled;
byte[] bitmapData;
using (var stream = new MemoryStream())
{
bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
bitmapData = stream.ToArray();
}
return bitmapData;
}
}
Проблема bitmapData
дает ошибку
Невозможно неявно преобразовать тип 'byte []' в 'System.Threading.Tasks.Task'
У меня есть поиск в Интернете, и в каждом сообщении говорится, что это способ преобразования растрового изображения в массив байтов []. Есть идеи, как исправить эту ошибку?
Позже я захочу загрузить массив byte [] в web api.