当照片选择器返回差异文件名时如何从 MediaLibrary 检索照片文件

Posted

技术标签:

【中文标题】当照片选择器返回差异文件名时如何从 MediaLibrary 检索照片文件【英文标题】:How to retrieve photo file from MediaLibrary when photochooser returned diff filename 【发布时间】:2013-07-14 12:45:56 【问题描述】:

我将图像保存在 MediaLibrary 中,如下所示

System.Windows.Media.Imaging.Extensions.SaveJpeg(wb, msWrite, g_IntWidth, g_IntHeight, 0, 100); 媒体库 ML = 新媒体库(); ML.SavePicture("My1stPhoto.jpg", msWrite);

问题是:

稍后当我使用 PhotoChooser 选择以前保存的照片 ( My1stPhoto.jpg ) 时,但这是有效的。返回的文件名似乎与 My1stPhoto.jpg 不同

我用下面的代码,字节是0?需要你的帮助。谢谢。

void photoChooserTask_Completed(object sender, PhotoResult e) strSelectedFilenameinHub = e.OriginalFileName; StreamResourceInfo sri = null; Uri jpegUri = new Uri(strSelectedFilenameinHub, UriKind.Relative); sri = Application.GetResourceStream(jpegUri); byte[] imageData = new byte[sri.Stream.Length]; sri.Stream.Read(imageData, 0, System.Convert.ToInt32(sri.Stream.Length));

【问题讨论】:

【参考方案1】:

为什么要使用媒体库检索流?可以直接使用e.ChosenPhoto检索图片内容:

void photoChooserTask_Completed(object sender, PhotoResult e)
    
     byte[] imageData = new byte[e.ChosenPhoto.Length];

     e.ChosenPhoto.Read(imageData, 0, System.Convert.ToInt32(e.ChosenPhoto.Length));

我也怀疑您是否需要将流的内容复制到字节数组。根据您要对图片执行的操作,您可能需要选择一种占用内存较少的方式。

【讨论】:

以上是关于当照片选择器返回差异文件名时如何从 MediaLibrary 检索照片文件的主要内容,如果未能解决你的问题,请参考以下文章

如何为图像选择器选择多个 (2-5) 图像然后作为图像视图返回?

当用户从照片库中选择图像时如何显示另一个视图

如何使用 html 文件选择器(输入类型 =“文件”)将照片上传到 facebook(图形 api)

我的内存卡里的图片打开时“windows照片查看器无法打开此图片,因为此文件可能已损坏、损毁过大”怎样恢复

在ui图像查看器中上传的照片保持消失

如何在 swift 4 中从图像选择器获取照片本地 url