WP7 的字节数组到 WriteableBitmap 图像 IValueConverter

2024-01-17

我已经解决这个问题有一段时间了。我从数据库中以 byte[] 形式获取图像,我想将其转换为 WritableBitmap,以便我可以使用绑定将其显示在我的 xaml 页面上。

我正在使用这个:

 public class ImageConverter : IValueConverter
{
    /// <summary>
    /// Converts a Jpeg byte array into a WriteableBitmap
    /// </summary>
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is byte[])
        {
            MemoryStream stream = new MemoryStream((Byte[])value);
            WriteableBitmap bmp = new WriteableBitmap(200, 200);
            bmp.LoadJpeg(stream);
            return bmp;
        }
        else
            return null;
    }
    /// <summary>
    /// Converts a WriteableBitmap into a Jpeg byte array.
    /// </summary>
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

第一个问题是它不起作用。当它命中时它会抛出一个未指定的异常bmp.LoadJpeg(stream);

第二个问题是关于传递给 WriteableBitmap 构造函数的固定大小,我如何知道来自数据库的照片的大小?我可以让它动态起来吗?我想第二个问题就是第一个问题的原因。

Thanks.

EDIT

我也尝试过使用PictureDecoder.DecodeJpeg()像这样:

            MemoryStream stream = new MemoryStream((Byte[])value);
            WriteableBitmap bmp = PictureDecoder.DecodeJpeg(stream);
            return bmp;

但它也不起作用。在这种情况下PictureDecoder.DecodeJpeg假设为我创建 bmp 对象。我仍然收到未指定的错误。难道是我超过了流允许的最大长度?


我用这个但它返回BitmapImage。你需要WriteableBitmap回到?

编辑:正如里奇在评论中提到的,如果您确实需要返回WriteableBitmap add

var writeableBitmap = new WriteableBitmap(bitmapImage);
return writeableBitmap

第二个问题是关于传递给的固定大小 WriteableBitmap 构造函数,我如何知道照片的大小 来自数据库?

创建 BitmapImage 后,您可以访问bitmapImage.PixelWidth and bitmapImage.PixelHeight.

 public class ByteArraytoImageConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null) return null;

            var byteBlob = value as byte[];
            var ms = new MemoryStream(byteBlob);
            var bmi = new BitmapImage();
            bmi.SetSource(ms);
            return bmi;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WP7 的字节数组到 WriteableBitmap 图像 IValueConverter 的相关文章

随机推荐

  • 在函数内分配内存后使用双指针

    我正在使用 C 中的双指针 想知道是否创建一个初始化表的函数 当我尝试使用 InitStringTable 分配的内存时 它会在返回 main 时崩溃 我相信一个简单的解决方法是使 strTable 成为全局的 然后我相信它可以 但我不想这
  • OpenCV-Python cv2.CV_CAP_PROP_POS_FRAMES 错误

    目前 我使用的是opencv 3 1 0 在执行以下代码时遇到以下错误 post frame cap get cv2 CV CAP PROP POS FRAMES 我收到以下错误消息 文件 videoOperation py 第 37 行
  • jQuery 模态和深度链接

    我目前有一个画廊 当您单击缩略图时 它会打开一个模式弹出窗口 我想做的是能够专门为模式生成一个唯一的链接 即 www mywebite com link1 它通过 ajax 加载其内容 如果有人要发送这个独特的模式链接并将其发送给某人 然后
  • NSDate 格式化程序

    不幸的是 我尝试将字符串转换为 NSDATE 但没有成功 2010 年 10 月 22 日星期五 11 26 45 美国东部时间 我知道格式化选项 http sree cc objective c nsdate format string
  • 与实体对象一起使用时,ResponseBuilder 不起作用

    我正在尝试使用responsebuilder 创建响应 当我在实体中传递字符串时 它工作正常 但是当我传递一些错误类时 它不起作用 这是代码 1 工作正常 Response status 400 entity test build 2 不工
  • 日期时间数据类型在soap php中不起作用

    这是我的代码 c new soapclient http www redbus in WS2 BookingService asmx wsdl array authentication gt array LoginID gt x Passw
  • jQuery Mobile:将数据从一个页面发送到另一页面

    我有一个问题 我需要将数据 ID 从列表发送到另一个页面 这是html代码 div div h1 Players App h1 div div ul ul div div
  • 如何以编程方式重置表单?

    我想在 JQuery 单击事件函数中重置表单 怎么做 最简单的是 form selector here 0 reset 但也请参阅 使用 jQuery 重置多阶段表单 https stackoverflow com questions 68
  • 如何根据日期是否大于今天的日期来呈现 JSF 组件?

    我从服务器端获取一个日期 以及如何在我的 xhtml 代码中比较它 这样如果它小于今天的日期 我将渲染面板 否则不会 你可以在你的bean中有一个方法 class MyBean public boolean isDateBigger dat
  • 将正则表达式模式从 Sub 传递到 Excel VBA 中的函数

    我试图将正则表达式模式传递给 Excel VBA 中的函数 但该模式似乎没有任何效果 我插入了 msgbox es 来查看字符串的样子 结果没问题 这是我正在使用的代码 Sub clean COP names Dim strSheet As
  • 一个 git 命令显示目录中所有文件的状态

    git ls files v o 显示未跟踪的文件 git ls files v 显示跟踪的文件 必须有一种更简单的方法来显示当前目录中所有文件的状态 如果有 259 个 可能是隐藏的 文件 那么我想查看 259 行 每行的状态如下 匹配头
  • Whoosh (Python) 在哪里物理存储索引内容?

    我开始研究内容索引的实现 并且正在查看 Whoosh https pypi python org pypi Whoosh https pypi python org pypi Whoosh 我很想知道 Whoosh 将其内容物理存储在哪里
  • 如何使用 DataAnnotation 验证下拉列表?

    我需要您的帮助 我在使用 AdataAnnotation 进行验证时遇到问题 我正在尝试使用它验证下拉列表 但它有一些问题 这是我的代码 查看侧面 using Html BeginForm addNewProject Activities
  • Oracle 19c Open_cursor 超出问题

    我们在 Oracle 10g 和 19c 中存在相同的存储过程 具有相同的数据集和设置 该过程执行大量数据获取和操作 当我们使用相同的数据集 假设 10000 条记录 执行时 它在 10g 中运行良好 时间更少 但在 19c 中需要很多时间
  • 我在哪里可以找到更新的实时汇率?

    如何将实时货币汇率链接到我的 iPhone 应用程序 首先 谁知道有哪些网站可以查询汇率 其次 如何将其链接到我的应用程序 我想做这个应用程序所做的事情 http the dream co uk currencee http the dre
  • Kendo 网格、ko 绑定和行索引访问

    我有一个 ko 视图模型 我使用 knockout kendo js 将其绑定到 KendoGrid 我使用 rowTemplate 因为我需要在某些列中使用一些自定义功能 图标 链接等 我需要根据行号执行一些自定义功能 当直接绑定 ko
  • EPERM:不允许操作 - IIS 上的 NPM Angular 7(后端为 .Net Core 2.1)

    大家好 我用 Visual Studio 2017 制作了一个 Angular 7 应用程序 所以我在 Windows 10 上安装了带有 IIS 的 AWS 机器 当我加载应用程序时 我收到此错误 AggregateException 发
  • 如何为 Web API 指定不同的 AADInstance?

    我正在致力于将 Web Api 与 azure China Active Directory 集成并部署到 azure China 环境 Azure 中国的端点与常规 Azure 环境完全不同 我想知道如何指定AADInstancehttp
  • 在线程环境中,分布式事务如何处理与同一数据库的多个连接?

    我正在尝试确定分布式事务中多个数据库连接的行为 我有一个长时间运行的进程 它会产生一系列线程 然后每个线程负责管理其数据库连接等 所有这些都在事务范围内运行 并且每个线程都通过DependentTransaction object 当我并行
  • WP7 的字节数组到 WriteableBitmap 图像 IValueConverter

    我已经解决这个问题有一段时间了 我从数据库中以 byte 形式获取图像 我想将其转换为 WritableBitmap 以便我可以使用绑定将其显示在我的 xaml 页面上 我正在使用这个 public class ImageConverter