Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms 如何显示图像路径中的图像_Xamarin.forms - Fatal编程技术网

Xamarin.forms 如何显示图像路径中的图像

Xamarin.forms 如何显示图像路径中的图像,xamarin.forms,Xamarin.forms,我有一个问题,它不会在我的主页上显示我的媒体插件中的图像。一旦我拍了一张照片,我就可以将它转换成图片,并将其存储为字节。无论如何,当我想将所有信息保存为一个整体时,图像不会加载 private async Task TakePicture() { 等待CrossMedia.Current.Initialize(); 如果(!CrossMedia.Current.IsCameraAvailable | |!CrossMedia.Current.IsTakePhotoSupported)//受支持或

我有一个问题,它不会在我的主页上显示我的媒体插件中的图像。一旦我拍了一张照片,我就可以将它转换成图片,并将其存储为字节。无论如何,当我想将所有信息保存为一个整体时,图像不会加载

private async Task TakePicture()
{
等待CrossMedia.Current.Initialize();
如果(!CrossMedia.Current.IsCameraAvailable | |!CrossMedia.Current.IsTakePhotoSupported)//受支持或不受支持
{
等待显示警报(LabelCZ.alertnoaccess、LabelCZ.AlertNoCamera、LabelCZ.AlertOk);
返回;
}
var imageSource=等待显示操作表(LabelCZ.AlertPhoto、LabelCZ.AlertCancel、LabelCZ.AlertNewPhoto、LabelCZ.AlertGallery);
if(imageSource==LabelCZ.AlertNewPhoto)
{
var imageFilename=await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions())
{
Name=$“{DateTime.UtcNow}.jpg”,
DefaultCamera=Plugin.Media.Abstractions.CameraDevice.Rear,
PhotoSize=PhotoSize.Medium,
SaveToAlbum=true
});
if(imageFilename==null)
返回;
其他的
{
byte[]imageAsBytes=\u cameraService.ConvertImageToBytes(imageFilename);
var imageSourceStream=ImageSource.FromStream(()=>newmemoryStream(imageAsBytes));
Add(新的AdLogEntry{ImagePath=imageFilename.AlbumPath,OriginalImage=imageAsBytes});
PhotoListView.ItemsSource=AdLogEntries;
}
}
else if(imageSource==LabelCZ.AlertGallery)
{
如果(!CrossMedia.Current.ISPickPhotosSupported)
{
等待显示警报(LabelCZ.alertnoaccess、LabelCZ.AlertNoCamera、LabelCZ.AlertOk);
返回;
}
var imageFilename=await CrossMedia.Current.PickPhotoAsync();
if(imageFilename!=null)
{
Photo.Source=ImageSource.FromFile(imageFilename.Path);
}
}
}
公共字节[]ConvertImageToBytes(MediaFile imageFilename)
{
字节[]imageAsBytes=null;
使用(var memoryStream=new memoryStream())
{
imageFilename.GetStream().CopyTo(memoryStream);
imageAsBytes=memoryStream.ToArray();
}
返回imageAsBytes;
}
已单击私有异步无效保存(对象发送方,事件参数e)
{
等待SaveAdLog();
}
//待办事项对所有人都是无效的
//必填字段的待办事项标记
专用异步任务SaveAdLog()
{
如果(!string.IsNullOrWhiteSpace(NameEntry.Text)| |(!string.IsNullOrWhiteSpace(PriceEntry.Text)| |(!string.IsNullOrWhiteSpace(Photo.AutomationId()| | |)
{
AdLogEntry AdLogEntry=新的AdLogEntry
{
Location=LocationEntry.Text,
Price=PriceEntry.Text,
Name=namentry.Text,
ImagePath=Photo.AutomationId,
};
_adService.CreateAddLogEntry(adLogEntry);
等待显示警报(LabelCZ.alertThankyu、LabelCZ.AlertSpace、LabelCZ.AlertOk);
}
其他的
{
等待显示警报(LabelCZ.AlertRequired、LabelCZ.AlertRequiredPlease、LabelCZ.AlertOk);
};
}
XAML


如果我将此部分从“拍照”更改为:

AdLogEntries.Add(new AdLogEntry { ImagePath = imageFilename.AlbumPath, OriginalImage = imageAsBytes });
PhotoListView.ItemsSource = AdLogEntries;
对此

\u adService.CreateAddLogEntry(新AdLogEntry{ImagePath=imageFilename.AlbumPath,OriginalImage=imageAsBytes});
PhotoListView.ItemsSource=AdLogEntries;
然后,它会根据需要在主页上显示图像,但不会与信息一起显示。它只创建了两个帖子。有什么问题?我需要他们创建一个带有特定ID的帖子,该帖子应该绑定到单个用户。 帖子Id与用户Id一样自动递增。

使用:

MediaFile file=wait CrossMedia.Current.TakePhotoAsync();
ImageSource ImageSource=ImageSource.FromFile(file.Path);

正如@Leon Lu-MSFT评论的那样。您可以将图像保存到本地存储器,或通过base64将图像转换为字符串,将所有信息存储到sqlite数据库

我想我没有解释清楚,我已经有了。我的问题是,我不知道如何像保存一个项目一样保存同一视图中的图像和信息。我添加了图片,也许这会澄清一点我的问题。您可以将图像保存到本地存储或通过base64将图像转换为字符串,将所有信息像我的代码一样存储到sqlite数据库。