找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19801|回复: 1

[原创代码] [Perl]BMP图片转TXT,暂时只支持黑白,0和1

[复制链接]
发表于 2015-11-5 10:59:21 | 显示全部楼层 |阅读模式
本帖最后由 523066680 于 2015-11-5 11:08 编辑

  1. =info
  2.     Code: 523066680
  3.     Date: 2015-11
  4. =cut

  5. use utf8;
  6. use IO::Handle;
  7. STDOUT->autoflush(1);
  8. binmode(STDOUT, ":encoding(gbk)");

  9. my $file = "1.bmp";

  10. our $READ;
  11. open $READ, "<:raw", $file or die "$!";

  12. GET_INFO:
  13. {
  14.     our $v;
  15.     read($READ, $v, 14, 0);
  16.     our ($type, $bfSize, $res1, $res2, $offset) = (unpack 'SLSSL', $v);

  17.     read($READ, $v, 4+4+4+2+2, 0);
  18.     our ($headSize, $width, $height, $planes, $bitCount) = (unpack 'L3S2', $v);

  19.     our $Compoments_per_pixel = $bitCount / 8;
  20.     #RGBA, 4bytes, 32bit
  21.     #RGB, 3bytes, 24bit

  22.     #Windows的BMP规定一行所占的字节数须是 4字节的倍数,不足的以0填充
  23.     our $rowLen = ($bfSize - $offset) / $height;
  24.     our $rowCut = ($width * $Compoments_per_pixel) % 4; #RGBA的情况下自然为0

  25.     printf "文件字节数:%04x -> %d\n", $bfSize, $bfSize;
  26.     printf "位图偏移量:%04x -> %d\n", $offset, $offset;
  27.     printf "   宽 × 高:%d×%d\n", $width, $height;
  28.     printf "  位图色深:%d 位\n", $bitCount;
  29. }

  30. TO_TEXT:
  31. {
  32.     #跳过文件头

  33.     seek($READ, $offset, 0);

  34.     my ($R, $G, $B);
  35.     my $col = 0;
  36.     my @all;
  37.     my $tstr="";

  38.     while ( read( $READ, $v, $Compoments_per_pixel, 0) )
  39.     {
  40.         $col++;
  41.         ($B, $G, $R) = unpack("C$Compoments_per_pixel", $v);   #C4 or C3

  42.         $tstr .= ($R || $G || $B) > 0 ? 0 : 1; #黑白取反, 白色为0,其他色为1

  43.         if ($col == $width)
  44.         {
  45.             unshift @all, $tstr;
  46.             seek($READ, $rowCut, 1);   #从当前去掉多余的填充字节
  47.             $col = 0;
  48.             $tstr="";
  49.         }
  50.     }

  51.     close $READ;

  52.     print join("\n", @all);

  53. }
复制代码


文件字节数:1426 -> 5158
位图偏移量:0036 -> 54
   宽 × 高:58×29
  位图色深:24 位
0000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000
0000000011110000000000000000000000000000000000000000000000
0000000111111000000000000000000000000000000000000000000000
0000000111111100000000000000000000000000000000000000000000
0000000110001110000000000000000000000000000000000000000000
0000001110001110000000000000000000000100000000000000000000
0000001110001110000000000000000000001110000000000000000000
0000011100001110000000000000000000001110000000000000000000
0000011100001110000000000000000000001110000000000000000000
0000011000011110000111110000000011111111111111110000000000
0000111011111110001111111000000111111111111111111000000000
0000110111111100011111111100000111111111111111111000000000
0001110111111110111000011100000000011100000000000000000000
0001110000011111111000011100000000011100000000000000000000
0001100000000111110000011100000000011100000000000000000000
0011100000000011110000011100000000011100000000000000000000
0011100000000011110000111100000000011111000000000000000000
0111000000000011110000111100000000001111100000000000000000
0011000000000011111111111111111000001111100000000000000000
0010000000000011111111100111111000000000000000000000000000
0111111111111111111110000011110000000000000000000000000000
0111111111111110000000000000000000000000000000000000000000
0011111111111100000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000

评分

参与人数 1技术 +1 收起 理由
依山居 + 1 ~高级~

查看全部评分

 楼主| 发表于 2018-11-27 20:02:03 | 显示全部楼层
本帖最后由 523066680 于 2018-11-27 20:07 编辑

轮廓贴合(未完善)

  1. 514 x 268
  2. 7 14
  3.                                __                       ?^.              
  4.                                ,                       _ 2 _,,           
  5.                            ( "+' "=~._            ,&=~,   __,4           
  6.                              `)  "``"0__.""___""%_   ~ ,.",            
  7.                             { _"$ (   ," ,*`    "+,",_ 2 *__            
  8.                              "'  %+ _" _"          "{"+=&,_              
  9.                                    ,  ,                7"*+."%,         
  10.                                   ,  2    _.=^""`7""*=,_     "%_%,      
  11.                                  _  2  ,*" __.+;+=+.    `"<_    %,".     
  12.                                 _' , ='_$"` )  |   _.%      ".    ",".   
  13.                                 '  0'_6+.   0 *0, _", ",  ""  ",    % :  
  14.                                ?    2 7{^%.";  ".`  ..+.: :    ,(    $ (
  15.                               $    ?_*+*    _ _+ _ ;=~.' :* `"" ";    % .
  16.                              ?    ?  9*"2 ?% "%.' [ :     %7{     (     $
  17. ",_                       _"   _'      '_  ``    *='       %_+,       |2
  18.    "%&_                  _?   _+        ``                    "%_7"+=&.:2
  19.       "$3+._          _="   _<                                   `"=~~="
  20.          `"=._""^"""`   _,="                                             
  21.                7""^*^""`
复制代码
  1. 380 x 198
  2. 7 18
  3.                        ":                ;,           
  4.                     %,"` "1<_  _,.._,4""{  =='        
  5.                      [_".%  .',"`  `*.%__'3_)         
  6.                           , ,`         "^+~2=,_      
  7.                          ? ? _."` ____ `"=.   ".".   
  8.                         ? ?+_>" 2 {   +?,  ,_%.  '.:  
  9.                        '   ''.%.0  %" 6.~%  ( _&   %'
  10.                      _   , %.+:,.%(,".(   *0.   3   (4
  11. "%_               _"  ,'    *.              ="=.__ {3
  12.      "0+~___  __."  _*                           "^*"
  13.           `"^+++""`                                   
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:47 , Processed in 0.018600 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表