如何根据字符串得到图片

吉普赛的歌 2019-11-26 09:56:00
数据源是一个身份证识别器, 刷卡后导出的xml 文件中的一部分,只知道这部分是与 身份证照片相关的,但弄不清楚如何转为图片。
下面是我写的代码, 能运行但结果图片是看不到, 请大神指点!谢谢!

using System;
using System.IO;
using System.Linq;

namespace ConsoleApp10
{
class Program
{
static void Main(string[] args)
{
string str = @"574c66007e00320000ff851d5151513e710dd564f377a09724cafc
59cdf1951982aff10838cbb3d6bf3bb590954e40068ecbbf9f182cd5f655fb96ffbb1beb88b215a336ead8c5ad50f60823c4cf104ae913
cca236872d19c6d1aed65251515a3eae5123418ce881f3915c0473c7037b7a0e93df00091bb494921c577daf72bd843a278688d859f35c
1d53362c046bfdc8e243c715200de5f09556f6fda11ebcc0ca7e698cd65c7e588cd6c1571aae51f4a131008bd2666619a5e642a2d0dcad
f45821b07d3d1e97f3e258259c0a8978f74b5ba0c0caded242f3b7423afd85583e35f89d83a77083f89338dfae510e41291ce9867ba38f
ef1e2208c3a08020b8599849fc953a3fbaca6fdab58eec9d2c7ac5b5f4aa07d920978d687dd131bd36f2fb9cc70742271a3f0f5b097b68
d4603bdbff0a91bce5018849400d6a81b8c014b292835f2475f889ef6c449ffe1eb3831d4a87af14f121a489820934df21ff1641ebf79e
8c02ea8cfcf32ef550328c803dde5740f828a375d44277f33629ccecae517d31814d0b4a65daf095b6638a64812a0940e3c307f704edc2
e01122ecb55a95065fcb7aed2c7b50346848caa461f63689b1e5c68fa2f64087b5c563619fb4a4241da23897049e70193e3ec4cedb2216
a5b256390e9950a15d50c09e6f62f185877238ab6ad1ec12a94708c0964b98df587626f7f9c4c506b0b51e8809bc7394b972776bc8f428
b4e3a89db16f7ce2661a0ae95a4de05ccba9403c8a6995d113e1d23b3431c263a0b4e95f4254cb1d3fa9b84307d78508e5ed3c17a3a76e
8ee480079d3907798ae4a971b3e53f496dff3f92c65ed1d4ec5fbad70cff163cded3d9c6a7bf8662583a853e4ed34b697ec03f38c62895
2202cb903caad9f5261096b9ee3b6ba277608ce559d0c7c3141d8ac81cca63325397c9bbae519be80ddf83bcf865a4d23133596c5e58c4
ff4a0b00189c6b63932e77f7ae5103234e55dc768e5502a5d577ad3fba071eccc46736bdbd24c198d0ba96b0e3e5693b7fa432e423093e
a7e707b65aa615fce4744a670a565e929105bffe603997f78af4ea9a31e4c789c81bff8040111d50116eff79ea9abe45668c8e830503a4
cfb2fdbd15fd1757201a162741573f380bb901b45c8c4c28273318a838cf799fa664e2662a43960081e79eaab6f1f78afee99c4c7eac8b
59cb7d7ed5b02bab642479f9f4df918b7d5a3eea9a5409d266f52b7b22896469cf28f1e8b41a7b9df24e0dd3acb167f4b9a68c5af6273e
bd1a0ae227b532bd644f1225ada895329bf8be93b3361a94ce2148e47453918c385f7b8fc836016288228e5a3e1f48633eb012a12b9ec7
6c9c33cb332c5868fb8626e4a528c50aef7aebf09709a9354beb10a515537539ef5387399b6cb01a03024425c76ba750c99a287409a4fd
8d6f92fe09c2d1";
str = str.Replace("\r", "").Replace("\n", "").Replace("\t", "").Replace(" ", "");
try
{
StringToImage(str, "d:\\abc.jpg");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.Read();
}

static void StringToImage(string hexString, string path)
{
byte[] arr = hexString.ToCharArray().Select(x => Convert.ToByte(x.ToString(), 16)).ToArray();
using (FileStream fs = File.Create(path))
{
fs.Write(arr, 0, arr.Length);
fs.Flush();
fs.Close();
}
}
}
}


...全文
927 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2019-12-23
  • 打赏
  • 举报
回复
引用 11 楼 贵阳老马马善福专业维修游泳池堵漏防水工程 的回复:
[quote=引用 9 楼 吉普赛的歌 的回复:] 后来发现, 这个刷卡机可以直接导出身份证照片的, 所以也就不纠结了, 直接导出来, 再导入到网站就是。 虽然多了一步, 但确认可行, 也就不麻烦大家了, 多谢各位。
伤心,一分也没有得到[/quote] Sorry, 看错了,那个300分本来是给你的,点到了下面一个人。 下次还有贴, 加倍给你吧。
threenewbee 2019-12-22
  • 打赏
  • 举报
回复
引用 9 楼 吉普赛的歌 的回复:
后来发现, 这个刷卡机可以直接导出身份证照片的, 所以也就不纠结了, 直接导出来, 再导入到网站就是。
虽然多了一步, 但确认可行, 也就不麻烦大家了, 多谢各位。

伤心,一分也没有得到
andy_wanhl 2019-12-10
  • 打赏
  • 举报
回复
吉普赛的歌 2019-12-10
  • 打赏
  • 举报
回复
后来发现, 这个刷卡机可以直接导出身份证照片的, 所以也就不纠结了, 直接导出来, 再导入到网站就是。 虽然多了一步, 但确认可行, 也就不麻烦大家了, 多谢各位。
datafansbj 2019-11-29
  • 打赏
  • 举报
回复
为什么不与识别器厂家联系呢?难不成要做黑客?这种问题已经超越技术了。
极客诗人 2019-11-29
  • 打赏
  • 举报
回复
应该直接联系 身份证识别器 这个的服务商
  • 打赏
  • 举报
回复
自有格式序列化的,谁知道他怎么做的序列化啊………………联系供给方吧
  • 打赏
  • 举报
回复
啧啧啧,好难得看得到这样一个大佬发帖子哦, 大佬方便说一下你这是什么文件?看着也不是Base64啊,自己写了算法还是?
andy_wanhl 2019-11-28
  • 打赏
  • 举报
回复
上面的字符串可以转出来,你这个字符串,报图片格式不对,可能损坏了,字符串2个对比的样子都不一样。 另一种可能,不是这样转的,可能加了密的。
andy_wanhl 2019-11-28
  • 打赏
  • 举报
回复
public static string StringConvertImage(string buffer, string fileName = "bg_print1")
{
string path = string.Format("{0}/{1}{2}.png", System.Environment.CurrentDirectory, System.DateTime.Now.ToString("yyyyMMddHHmmss"), fileName);
byte[] bytes = Convert.FromBase64String(buffer);
MemoryStream ms = new MemoryStream();
ms.Write(bytes, 0, bytes.Length);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(ms);
if (Directory.Exists(path))
{
Directory.Delete(path);
}
bmp.Save(path);
return path;
}
threenewbee 2019-11-26
  • 打赏
  • 举报
回复
你的代码转换出来

我修改了下
            byte[] arr = hexString.Select((x, i) => new { x, i })
.GroupBy(x => x.i / 2).Select(x => x.First().x.ToString() + x.Last().x.ToString())
.Select(x => Convert.ToByte(x, 16)).ToArray();

现在转换出来

但是这个文件并非有效的图片格式

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧