在 C# 中将十六进制转换为图像

问题描述 投票:0回答:1

我有这个十六进制数据,

0xFFD8FFE000104A46494600...
,我把它放在一个字符串中,在我的WPF应用程序的xaml中,我有一个
<Image/>
,这个编码图像需要结束。我对此有几个疑问。

  1. 最大的问题,我只是找不到解码它的方法,我也不明白它是如何工作的,我只知道我有一个字符串,我需要得到一个图像,我不知道该图像是否需要保存在某个地方,或者我可以直接将图像添加到实际脚本中的

    <Image/>
    ...我需要这方面的帮助,我只是想要一个方法,我可以在其中给出字符串并返回我可以使用的图像。

  2. 最好的方法是什么?例如,如果它是不同页面上的个人资料图片,我应该以某种方式将其保存在某个地方,或者将字符串放在某个地方并一直对其进行解码,还是?..

注意:十六进制数据是正确的,我使用此网站进行输入+输出:单击查看我的测试

c# image hex
1个回答
0
投票

基本上,您可以做的是将十六进制字符串转换为字节数组,然后创建

BitmapImage
并将其设置为
BitmapImage
控件的源。
将十六进制字符串转换为字节数组可以这样完成(

source

): Image

之后,您需要从字节数组中制作
public static byte[] StringToByteArray(String hex) { int NumberChars = hex.Length; byte[] bytes = new byte[NumberChars / 2]; for (int i = 0; i < NumberChars; i += 2) bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16); return bytes; }

。你可以这样做(

来源
): BitmapImage

然后您需要将 
public BitmapImage ToImage(byte[] array) { using (var ms = new System.IO.MemoryStream(array)) { var image = new BitmapImage(); image.BeginInit(); image.CacheOption = BitmapCacheOption.OnLoad; // here image.StreamSource = ms; image.EndInit(); return image; } }

设置为

BitmapImage
控件的源。你可以这样做:
Image

希望这有效。现在还不能真正尝试。

© www.soinside.com 2019 - 2024. All rights reserved.