zoukankan      html  css  js  c++  java
  • C# WPF Image控件下对于Base64的转化显示

    算作前言

    本文对图片如何转化成base64不做描述,我们可以从很多途径了解到转化办法。却很少有博客提到怎么在WPF的Image控件中显示图片。

    对于base64的合法性

    随便拿一张图片转一下试一试:

    额。好长....取前面一部分吧

    data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAA9CAMAAADlJaswAAAAe1BMVE.....

    C#对于这段数据,通常的做法是:

    try
    {
        byte[] streamBase = Convert.FromBase64String(base64);
    }
    catch(Exception ex)
    {
        Console.WriteLine(ex.Message);
    }

    抛出了异常:

    输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。

    明明是正常转化得来的,为什么却是不合法的字符串?其实这里还需要一点处理,就算把头部信息去掉!

    //base64 = base64.Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/jpeg;base64,", "");//将base64头部信息替换
    string imagebase64 = base64.Substring(base64.IndexOf(",") + 1);

    这样就可以成功转化了。现在来看怎么显示在Image里面。

    WPF中Image显示

     答案:https://stackoverflow.com/questions/593388/how-do-i-read-a-base64-image-in-wpf

    string imagebase64 = base64.Substring(base64.IndexOf(",") + 1);
    byte[] streamBase = Convert.FromBase64String(imagebase64);
    BitmapImage bi = new BitmapImage();
    bi.BeginInit();
    bi.StreamSource = new MemoryStream(streamBase);
    bi.EndInit();
    Image.Source = bi;

    没啥太花里胡哨的东西。

  • 相关阅读:
    Git
    java类加载
    DES-加解密C语言实现
    Android消息队列初识 && ThreadLocl 简述
    DbUTils
    JDBC(二)
    jdbc工具类
    JDBC(一)
    数据库
    MySQL数据库学习: 01 —— 数据库的概述
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/10545096.html
Copyright © 2011-2022 走看看