如何根据字符串得到图片

吉普赛的歌 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();
}
}
}
}


...全文
203 点赞 收藏 11
写回复
11 条回复
吉普赛的歌 2019年12月23日
引用 11 楼 贵阳老马马善福专业维修游泳池堵漏防水工程 的回复:
[quote=引用 9 楼 吉普赛的歌 的回复:] 后来发现, 这个刷卡机可以直接导出身份证照片的, 所以也就不纠结了, 直接导出来, 再导入到网站就是。 虽然多了一步, 但确认可行, 也就不麻烦大家了, 多谢各位。
伤心,一分也没有得到[/quote] Sorry, 看错了,那个300分本来是给你的,点到了下面一个人。 下次还有贴, 加倍给你吧。
回复 点赞
引用 9 楼 吉普赛的歌 的回复:
后来发现, 这个刷卡机可以直接导出身份证照片的, 所以也就不纠结了, 直接导出来, 再导入到网站就是。
虽然多了一步, 但确认可行, 也就不麻烦大家了, 多谢各位。

伤心,一分也没有得到
回复 点赞
andy_wanhl 2019年12月10日
回复 点赞
吉普赛的歌 2019年12月10日
后来发现, 这个刷卡机可以直接导出身份证照片的, 所以也就不纠结了, 直接导出来, 再导入到网站就是。 虽然多了一步, 但确认可行, 也就不麻烦大家了, 多谢各位。
回复 点赞
datafansbj 2019年11月29日
为什么不与识别器厂家联系呢?难不成要做黑客?这种问题已经超越技术了。
回复 点赞
极客诗人 2019年11月29日
应该直接联系 身份证识别器 这个的服务商
回复 点赞
非专业开发Five 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;
}
回复 点赞
你的代码转换出来

我修改了下
            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();

现在转换出来

但是这个文件并非有效的图片格式
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告