You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在UWP中如何将JPEG数据转换为图像?附相关代码解析

在UWP应用中将JPEG数据转换为图像的正确实现

先帮你梳理下现有代码里的几个关键问题,这些问题会直接导致功能无法正常工作:

  • 条件判断逻辑倒置:你在textBox2.Text为空时才执行Base64转换,这时候调用Convert.FromBase64String必然抛出异常,应该判断文本非空时才处理
  • 循环赋值覆盖:foreach里每次把item赋值给textBox2.Text,最终textBox2只会保留最后一个PictureNo的值,丢失了其他节点数据
  • 无效的空值转换:用空文本生成Base64再拼接成data URI,完全无法生成有效的图像源

下面是修正后的完整实现方案,包含正确的XML解析、Base64转换和图像赋值逻辑:

// 解析XML获取PictureNo节点的Base64值
XDocument xdoc = XDocument.Parse(rr.Nodes[1].ToString(), LoadOptions.None);
xdoc.Declaration = new XDeclaration("1.0", "UTF-8", "yes");

// 获取所有PictureNo节点的值(按需选择第一个或处理全部)
var pictureNoValues = xdoc.Descendants("PictureNo").Select(b => b.Value).ToList();

// 取第一个非空的Base64值来转换
string targetBase64 = pictureNoValues.FirstOrDefault(v => !string.IsNullOrEmpty(v));

if (!string.IsNullOrEmpty(targetBase64))
{
    try
    {
        // 将Base64字符串转为JPEG字节数组
        byte[] jpegBytes = Convert.FromBase64String(targetBase64);
        
        // 把字节数组转为UWP可识别的BitmapImage
        using (var stream = new InMemoryRandomAccessStream())
        {
            await stream.WriteAsync(jpegBytes.AsBuffer());
            stream.Seek(0);
            
            BitmapImage bitmap = new BitmapImage();
            await bitmap.SetSourceAsync(stream);
            
            // 赋值给Image控件的Source
            image.Source = bitmap;
        }
    }
    catch (FormatException ex)
    {
        // 处理Base64格式错误
        Debug.WriteLine($"Base64格式异常: {ex.Message}");
    }
    catch (Exception ex)
    {
        // 处理其他转换异常
        Debug.WriteLine($"图像转换失败: {ex.Message}");
    }
}
else
{
    // 无有效数据时的处理(比如设默认图或清空)
    image.Source = null;
}

关键细节说明:

  • XML解析优化:用FirstOrDefault获取第一个有效数据,避免循环覆盖文本框;如果需要处理多图,可以遍历pictureNoValues逐个转换
  • 可靠的图像转换:UWP中推荐用BitmapImage配合InMemoryRandomAccessStream处理字节流图像,比直接拼接data URI更稳定,尤其适合大尺寸图像
  • 异常防护:添加格式异常和通用异常捕获,避免程序崩溃,同时方便调试定位问题

内容的提问来源于stack exchange,提问作者Bulent Erim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:13:24