我需要使用可移植的xamarin.forms从相机中捕获图像,并获取图像byte []数据的访问权限以进行图像处理。
如何做到这一点?
我有工作代码捕获图像并使用xlabs
简单地显示它public async Task<MediaFile> TakePicture()
{
Setup ();
ImageSource = null;
return await _Mediapicker.TakePhotoAsync (new CameraMediaStorageOptions {
DefaultCamera = CameraDevice.Front, MaxPixelDimension = 400
}).ContinueWith (t => {
if (t.IsFaulted)
{
Status = t.Exception.InnerException.ToString();
}
else if (t.IsCanceled)
{
Status = "Canceled";
}
else
{
MediaFile mediaFile = t.Result;
ImageSource = ImageSource.FromStream(() => mediaFile.Source);
return mediaFile;
}
return null;
}, _scheduler);
}
和
private async void buttonTakePicture_Clicked() {
await cameraViewModel.TakePicture();
imageView.Source = cameraViewModel.ImageSource;
}
点击按钮启动cameraViewModel.TakePicture()
,然后使用xlabs实际拍摄设备上的图片。
如何更改代码以向我提供图像原始数据(或者完全使用不同的代码)?
由于
答案 0 :(得分:0)
您可以使用mediaFile.Path
并将其作为DependencyService的参数传递:
//For Android
public byte[] ByteArrayFromStream(string path)
{
var bitmap = BitmapFactory.DecodeFile(path);
byte[] bitmapData;
using(stream = new MemoryStream())
{
bitmap.Compress(Bitmap.CompressFormat.Png, 100, stream);
bitmapData = stream.ToArray();
}
return bitmapData;
}
//For iOS
public byte[] ByteArrayFromStream(string path)
{
UIImage originalImage = UIImage.FromFile(path);
return originalImage.AsPNG().ToArray();
}
要了解有关DependencyService的更多信息,您可以访问以下文档: https://developer.xamarin.com/guides/xamarin-forms/dependency-service/
答案 1 :(得分:0)
这将帮助您在PCL中获取byte []:
{{1}}