lsstarboy 发表于 2015-12-21 10:15

vt开机画面的BMP转换PHP程序

vt开机画面,默认是一个简单的FreeBSD,如果要换成自己的,需要自己制作并把相应的十六进制代码写在C语言代码中。
但是vt用的bmp跟常用的windows bmp不一致,直接把windows下的bmp文件的十六进制代码写入是倒着显示的,这还要去掉bmp头部才可以。
经过源代码的分析,写了一个简单的小程序,可以转换为vt需要的16进制模式。
熟悉PHP,反倒把Shell忘的差不多了,所以就写php程序了,修改也简单,不像C要修改还要重新编译:

输入为当前目录下aa.bmp,其实也可以写成参数,懒人就穷凑合了……<?php

$fp = fopen(dirname(__FILE__). '/aa.bmp', 'rb');
$cont = fread( $fp, 40000 );
fclose( $fp );

$hex_str = str_split( bin2hex( $cont ) , 2 );

$hex_str = array_slice( $hex_str, 62, 38400 );
var_dump( count( $hex_str ));

$tmp = '';
$out = array();
foreach( $hex_str as $i=>$v ){
      $m = $i % 80;

      // is the end line
      if( $m < 1 ){
               $tmp .= "\n";
               $out[] = $tmp;
               $tmp = '';
      }

      $tmp .= '0x' . $v . ',';

}


$out = array_reverse( $out );
foreach ( $out as $v ) echo $v ;

echo "\n";

?>

williamy 发表于 2015-12-22 21:06

"vt开机画面"是什么
这是有趣的,可以请你分享更多的信息?

lsstarboy 发表于 2015-12-22 21:36

回复 2# williamy


http://bbs.chinaunix.net/thread-4177652-1-1.html
页: [1]
查看完整版本: vt开机画面的BMP转换PHP程序