Universal App图片文件和图片byte[]信息转换为bitmap

1. 打开图片文件并转换为BitmapImage类

首先要做的自然是打开一个图片文件了,可以使用FileOpenPicker来手动选择图片,总之能拿到一个StorageFile都行。

//打开图片选择器,选择要发送的图片
var openPicker = new FileOpenPicker
{
  ViewMode = PickerViewMode.Thumbnail,
   SuggestedStartLocation = PickerLocationId.PicturesLibrary
};
openPicker.FileTypeFilter.Add(".jpg");
openPicker.FileTypeFilter.Add(".jpeg");
var file = await openPicker.PickSingleFileAsync();

也可以使用StorageFile.GetFileFromApplicationUriAsync获取,下面代码得到的文件是应用独立存储文件夹LocalState里的1.jpg文件。

var path = "ms-appdata:///local/1.jpg";
var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri(path));

接下来将文件打开,并把文件流写入到BitmapImage中。

//将图片文件读取为BitmapImage
var fileStream = await file.OpenReadAsync();
var bitmap = new BitmapImage();
await bitmap.SetSourceAsync(fileStream);

2. 将图片byte[]信息转换为bitmap

首先要把byte[]转换为IRandomAccessStream然后再使用BitmapImage.SetSourceAsync方法将流写入bitmap中,单纯的MemoryStream是不能直接写入到bitmap中的。

public async static Task<BitmapImage> ConvertBytesToBitmapImage(byte[] bytes)
{
        try
            {
                if (bytes == null || bytes.Length == 0) return null;

                var stream = new MemoryStream(bytes);
                var randomAccessStream = new InMemoryRandomAccessStream();
                using (var outputStream = randomAccessStream.GetOutputStreamAt(0))
                {
                    var dw = new DataWriter(outputStream);
                    var task = new Task(() => dw.WriteBytes(stream.ToArray()));
                    task.Start();
                    await task;
                    await dw.StoreAsync();
                    await outputStream.FlushAsync();

                    var bitmapImage = new BitmapImage();
                    await bitmapImage.SetSourceAsync(iRandomAccessStream);
                    return bitmapImage;
                }
            }
            catch (Exception exception)
            {
                Debug.WriteLine("[Error] Convert bytes to BitmapImage failed,exception:{0}", exception);
                return null;
            }
}                
时间: 2024-08-26 12:07:48

Universal App图片文件和图片byte[]信息转换为bitmap的相关文章

整理图片文件,图片转word文档的方法

在日常的工作中,我们可能会遇见上级给我们的整理图片的工作,但是这些工作是在原有的工作基础上添的,由于图片转文字很浪费时间,职场人遇到这样的问题都很头疼.众所周知,图片是很难直接进行编辑的一种文件格式,那我们如何才能快速的把图片上的文字识别出来呢?下面就跟着小编一起去探索一些图片转文字.图片文字识别的方法吧.图片转文字的工具选择:想快速的实现图片转文字,那就要借助第三方软件了,比如说"迅捷OCR文字识别软件"为例,便是一个很好的图片转文字工具,功能齐全,可以实现图片转word.图片转TX

java读取图片文件 写入图片

如何将位置信息写入JPEG图片文件【android】

通过ExifInterface可以将拍照时的一些属性信息写入图片文件里,其中包括经纬度信息.本文介绍一种将经纬度坐标写入JPEG图片文件的方法! 核心代码 /** * 浮点型经纬度值转成度分秒格式 * * @param coord * @return */ public String decimalToDMS(double coord) { String output, degrees, minutes, seconds; // gets the modulus the coordinate d

将图片文件以byte的形式从导数据库中

byte[] FileByteArray = new byte[FileLength];  //图象文件临时储存Byte数组                 //Stream StreamObject = UpFile.InputStream;             //建立数据流对像 /////读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置.FileLnegth为数据长度                   //StreamObject.Read(FileByte

iOS获取app图标和启动图片名字(AppIcon and LaunchImage&#39;s name)

在某种场景下,可能我们需要获取app的图标名称和启动图片的名称.比如说app在前台时,收到了远程通知但是通知栏是不会有通知提醒的,这时我想做个模拟通知提示,需要用到icon名称:再比如在加载某个控制器时,想设置该控制器的背景图片为启动图片,需要用到启动图片名称. 而事实上icon图片放在系统AppIcon文件夹里,启动图片放在系统LaunchImage文件夹里,取这些图片的名称和其他一般资源图片名称不一样. 为了方便举例子,咱们先简单粗暴点 假设当前项目只支持iPhone设备,并且只支持竖屏:而

[Android] 针对生成的图片文件在系统Gallery不显示的处理

之前遇到过一个问题,就是发现我在程序中生成一个新的 Bitmap 之后,当我打开系统的 Gallery 查看时,并没有看到新生成的图像.然而打开文件浏览器,找到保存 Bitmap 所在的文件夹下,还能看到程序生成的 Bitmap 文件.也就是说,文件其实存在,但 Gallery 似乎并没有刷新.之后,又一个新的行为证实了我的观点,即,每次重启设备之后, Gallery 中就会显示新生成的 Bitmap 了.也就是说,重启设备之后,系统对某个保存有图片信息的文件进行了重新读写(当时得出的是这么个结

解决微信内嵌浏览器无法响应上传文件(图片)的思路(2种办法)

进园一年多来,第一次写博客,好激动.原因主要是自己平时都是有写笔记,不习惯写博客,这次想写博客的原因是,这个问题确实我做了很久,已经做了近两周才解决了这个问题,,而且两周时间里尝试过了很多种办法,然后由于网上又没有多少人分享这个,决定自己写一下. 先自我介绍下,我是惠州学院大二(准大三)的学生,在去年暑假时候加了一个工作室开始写代码,也是在那个时候加入博客园,最近因为工作室要做微信端网页的开发需要一个上传图片功能,然后编码的时候发现用平时的方法做的上传功能在Android的微信端上实现不了,百度

spring mvc 图片上传,图片压缩、跨域解决、 按天生成文件夹 ,删除,限制为图片代码等相关配置

spring mvc 图片上传,跨域解决 按天生成文件夹 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ #fs.domains=182=http://172.16.100.182:18080,localhost=http://localhost:8080 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE b

基于spring-boot的web应用,ckeditor上传文件图片文件

说来惭愧,这个应用调试,折腾了我一整天,google了很多帖子,才算整明白,今天在这里做个记录和分享吧,也作为自己后续的参考! 第一步,ckeditor(本博文论及的ckeditor版本4.5.6)的配置图片文件上传功能,默认这个是没有开启的,就不用多说,ckeditor官网上也说的很清楚!http://docs.ckeditor.com 下面简单的说下配置(配置文件algoConfig.js): 1 CKEDITOR.editorConfig = function( config ) { 2