V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
kkk414
V2EX  ›  问与答

请问如何将批量存储在 TXT 文本中的照片信息批量导出,并将导出的照片信息命名为对应人员的证件号码?

  •  
  •   kkk414 · Oct 24, 2015 · 4961 views
    This topic created in 3843 days ago, the information mentioned may be changed or developed.
    因工作需要,现在要处理大量人员数据。
    而数据源全是 TXT 文本保存,内容有个人身份信息和头像照片。
    现在需要需要将 TXT 中的照片批量导出,并命名为对应人员的身份证号码。

    不知道有无相关处理经验高手不吝赐教

    测试源 TXT : http://pan.baidu.com/s/1kTrQYUj
    Supplement 1  ·  Oct 25, 2015
    说明一下大家关心的问题,本贴所提供的测试数据是处理过的(姓名、证件号,头像都没有对应关系)
    如遇红领巾 V 友,请 mail:414kkk[诶他]163.com .
    29 replies    2015-10-26 19:01:59 +08:00
    virusdefender
        1
    virusdefender  
       Oct 24, 2015
    后面的一堆看着像 base64

    写个 Python 脚本分割就行啊
    orzfly
        2
    orzfly  
       Oct 24, 2015
    "此项暂不返回核查结果"……

    今天刚好看到一个帖子里的图……啧啧。
    http://static.wooyun.org/wooyun/upload/201510/20201057358328cb04f97b3d35b20325bacbdb62.png
    http://www.wooyun.org/bugs/wooyun-2015-0148164
    just1
        3
    just1  
       Oct 24, 2015 via Android
    txt 啥时能保存图像了
    vmebeh
        4
    vmebeh  
       Oct 24, 2015
    前面几个应该是标志位,然后是 Base64 的二进制数据, JFIF 格式的 JPG
    kkk414
        5
    kkk414  
    OP
       Oct 24, 2015
    @orzfly 对这是人行的核查结果,有办法批量导出吗?
    kkk414
        6
    kkk414  
    OP
       Oct 24, 2015
    @virusdefender 不懂 Python 请指教
    kkk414
        7
    kkk414  
    OP
       Oct 24, 2015
    @just1 也是头次遇到,单独把后面的一串字条保存成 JPG 又打不开
    kkk414
        8
    kkk414  
    OP
       Oct 24, 2015
    @vmebeh 谢谢分析,求处理方法
    ferock
        9
    ferock  
    PRO
       Oct 24, 2015 via Android
    伸手党
    gdtv
        10
    gdtv  
       Oct 24, 2015   ❤️ 2
    PHP 的处理方法:

    ><?php
    header('Content-Type: text/html; charset=gb2312');
    $d = dir(dirname(__FILE__));
    while(false !== ($v = $d->read())) {
    if(strpos($v,'TXT')){
    $file_str = file_get_contents($v);
    $file_lines = explode("\r\n",$file_str);
    foreach($file_lines as $file_line){
    preg_match('/[\s]{10,}([\d]{18}[ⅩxX]{0,1}).*[\s]{5,}00(.*)$/',$file_line,$file_parts);
    if($file_parts[1] && $file_parts[2]){
    file_put_contents($file_parts[1].'.jpg', base64_decode($file_parts[2]));
    }
    }
    }
    }
    echo 'ok';

    将以上代码保存成一个.php 文件,和所有数据源 TXT 文件一起放到同一个目录,然后运行
    Zzzzzzzzz
        11
    Zzzzzzzzz  
       Oct 24, 2015
    你这直接把名字、身份证号和照片合并成的文件当例子放出来下载不好吧
    kkk414
        12
    kkk414  
    OP
       Oct 24, 2015
    @Zzzzzzzzz 除了头像,其它信息都处理过了,都是随机改的。
    kkk414
        13
    kkk414  
    OP
       Oct 24, 2015
    @gdtv 谢谢提供方法 ,
    COPY 了代码并存 PHP ,但 PHP 要用什么运行?双击 PHP 文件打开了 IE ,结果 IE 里还是显示这段代码
    loading
        14
    loading  
       Oct 24, 2015 via Android
    建议楼主用网上的图片做几个样本文件,提供给大家测试,不然你这种伸手法是没结果的。
    loading
        15
    loading  
       Oct 24, 2015 via Android
    看完楼主还问如何运行 php ,自己居然不先自己搜索一下…

    好人不代表是保姆!

    也许有偿会好一些,楼主来个价格吧,也许睡醒这个问题就解决了,目测不需要你一周的工资。
    kkk414
        16
    kkk414  
    OP
       Oct 24, 2015
    @loading 谢谢提醒,你说的也在理
    gdtv
        17
    gdtv  
       Oct 24, 2015
    @loading 楼主不懂 PHP ,让他运行 PHP 确实是件麻烦事,希望有戴红领巾的大侠写个 exe 给楼主直接运行吧
    abelyao
        18
    abelyao  
       Oct 24, 2015
    EXE 工具不难写,好奇的是数据来源…
    loading
        19
    loading  
       Oct 24, 2015 via Android
    @abelyao 这个不可细问,涉及商业秘密吧~
    icedx
        20
    icedx  
       Oct 24, 2015
    楼主要么分享我数据 要么买我程序 我已经写好了
    abelyao
        21
    abelyao  
       Oct 24, 2015
    @loading 就怕数据是从哪里弄来的… 毕竟 demo 都没有打码,原名及身份证信息都…
    kkk414
        22
    kkk414  
    OP
       Oct 25, 2015
    @abelyao 数据来源是本地人行的核查数据,跟 @orzfly 提的内容毫不相关(人家的是考试系统练手的), @abelyao @icedx @loading 多想了,如果真如你们所疑,有通过非正途获得数据的技能,又何愁要来此请大家教? 大家心里有点想法也是正常的,还是要谢谢各位关注。
    sualwu
        23
    sualwu  
       Oct 25, 2015   ❤️ 1
    Linux 下, 一行命令就可以了:
    awk '{if(NF == 3){filename=substr($2,1,18);sub(/^00/,"",$3);system("echo "$3"|base64 -d >"filename)}}' 10355.TXT

    kkk414
        24
    kkk414  
    OP
       Oct 25, 2015
    @sualwu 谢谢提供参考方案,请问如何批量处理多个 TXT 文档? 另外这种方案只能在 Linux 下实现吗?楼上也有 @gdtv 红领巾 V 友写了 PHP 可惜我是个门外汉,再次谢谢他
    horsley
        25
    horsley  
       Oct 25, 2015
    门外汉的话,还是花点钱吧,有钱,给你做批量处理 做独立运行 exe 都不是问题
    kkk414
        26
    kkk414  
    OP
       Oct 25, 2015
    @horsley 有钱能使人推磨吗?
    感觉 V 友中也有不乏红领巾,交流和买卖是两码事。祝你工作顺利
    kkk414
        27
    kkk414  
    OP
       Oct 26, 2015
    @gdtv 按你的方案已经单个文件成功导出了,但是多个 TXY 批量的导出只能到 7 千多张,请教一下

    Fatal error: Maximum execution time of 60 seconds exceeded in D:\1.php on line 12
    gdtv
        28
    gdtv  
       Oct 26, 2015   ❤️ 1
    @kkk414 改了一下,你再试试

    <?php
    header('Content-Type: text/html; charset=gb2312');
    $d = dir(dirname(__FILE__));
    while(false !== ($v = $d->read())) {
    if(strpos($v,'TXT')){
    set_time_limit(120);
    $file_str = file_get_contents($v);
    $file_lines = explode("\r\n",$file_str);
    foreach($file_lines as $file_line){
    preg_match('/[\s]{10,}([\d]{18}[ⅩxX]{0,1}).*[\s]{5,}00(.*)$/',$file_line,$file_parts);
    if($file_parts[1] && $file_parts[2]){
    file_put_contents($file_parts[1].'.jpg', base64_decode($file_parts[2]));
    }
    }
    }
    }
    echo 'ok';
    kkk414
        29
    kkk414  
    OP
       Oct 26, 2015
    set_time_limit(120); 搜了下也可以通过修改 php.ini 设定是限。
    OK 了 感谢 @gdtv 指点!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2757 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 00:18 · PVG 08:18 · LAX 17:18 · JFK 20:18
    ♥ Do have faith in what you're doing.