安卓手机第一屏Logo开机动画更换 - Power By team board 手机第一屏是Logo静态图片(logo.bin或者logo.img),第二屏为/system/media/images/boot_logo(也是静态图片),第三屏为开机动画/system/media/bootanimation.zip(开机动画),第四屏多数就是关机动画了/system/media/shutanimation.zip(关机动画) 。第一屏logo.img、第二屏boot_logo的制作方法:
1.使用条件:仅限于ship s-off或者eng s-off,下载后,改名为PG88IMG.zip,放在SD卡根目录刷!,将你喜欢的图片,先裁剪成480X800大小(可以用PS,光影魔术手等图片处理软件,最简单的是手机上的快图浏览),图片如果不是PNG格式,裁剪完后需转换成PNG格式(电脑上的画图就可以最方便的转换,用画图打开后再另存为PNG格式就可以了),转换完成后,解压附件“PNG转IMG”,将转换好的图片重命名为new_splash.png,然后放入解压出来的文件夹中,双击运行(WIN7用户请以管理员身份运行)“生成IMG文件.bat”,几秒后,文件夹中会多出一个new_splash.img文件,将此文件重命名为splash1.nb0(最后这个是数字0,不是字母O),最后,选中splash1.nb0文件和android-info.txt文件,右键选添加到压缩文件,在跳出的界面中勾选zip格式,压缩包名字为PG88IMG,点击确定后文件夹中就会多出一个PG88IMG.zip的压缩包,就制作完成了。如果你没有图片素材,这样的图片你也可以在手机的开机动画包中提取,甚至是手机的SYSTEM/CUSTOMIZE/RESOURCE中寻找。———————————–———————————–———————————–
2.第一屏动画新建文档950*540像素,背景填充黑色。(可以根据自己手机的分辨率建立)另新建图层,随意绘制一条白色线条。为线条图层添加外发光图层样式,添加内发光样式。按Ctrl+A全选,按Delete删除白色线条,只保留图层样式。打开上传好的素材图片,编辑—定义为画笔预设。回到刚刚的黑色文档,选择画笔工具,选择刚刚定义的画笔。将前景色设为白色,按下鼠标后就会看到效果,把做好的原图用工具生成第一屏,把oemlogo.mbn文件放进内存卡里面,用RE管理器放进cust\chinatelecom\cn\logo,把源文件覆盖;再用re管理器到system/bin文件夹找到“load_oemlogo”这个文件,然后修改权限为322(所有者全部打钩、群组:“读”和“执行”、其它:打“读”和“执行”);接下来 长 按文件选择打开方式,选择linux脚本处理器打开,会提示该文件为可执行脚本文件,选择执行。执行完后会显示system/bin/load_oemlogo已执行,重启手机.
3.boot_logo为RGB565格式图片重命名而来,logo.img则需要将RGB565格式图片进行处理后打包得来。下载MT65xx解包和打包的脚本,使用NOTEPAD++(或者记事本)打开repack-MT65xx.pl ,仔细观察代码。 :
script from Android-DLS WiKi
#
# changes by Bruno Martins:
# - modified to work with MT6516 boot and recovery images (17-03-2011)
# - included support for MT65x3 and eliminated the need of header files (16-10-2011)
# - added cygwin mkbootimg binary and propper fix (17-05-2012)
# - included support for MT65xx logo images (31-07-2012)
# - fixed problem unpacking logo images containing more than nine packed rgb565 raw files (29-11-2012)
#
从打包脚本中可以知道,此脚本完全支持MT65XX多图片的RGB565格式LOGO图片打包。 my $usage = "repack-MT65xx.pl COMMAND [...]\n\nCOMMANDs are:\n\n -boot <kernel> <ramdisk-directory> <outfile>\n Repacks boot image\n\n -recovery <kernel> <ramdisk-directory> <outfile>\n Repacks recovery image\n\n -logo <logo-directory> <outfile>\n Repacks logo image\n\n";
从这一段信息中可以得知打包脚本的命令使用方法,看到:
-logo <logo-directory> <outfile>\n
Repacks logo image\n\n";
那么使用cgwin时cd到工具所在目录,打包logo.img的命令格式为: ./repack-MT65xx.pl -logo 工作文件夹名(内含RGB565图片) logo.img(名称随意,叫logo.bin也是可以的) .使用十六进制编辑器打开自己机型已有的logo.bin或者logo.img,发现无论是官方还是第三方,都会看到相同的文件头(header file):MTK通用的logo.bin或者logo.img实质上是一样的。继续看打包脚本,找到 “sub repack_logo {” 于是有:
sub repack_logo {
# initilization
my $input;
my $logodir = $ARGV[1];
my $outfile = $ARGV[2];
my $signature = $_[0];
$ARGV[0] =~ s/-//;
chdir $logodir or die "\n$logodir $!";
my (@raw_addr, @zlib_raw) = ();
print "\nRepacking $ARGV[0] image...\n";
my $i = 0;
my $slurpvar = $/;
undef $/;
for my $inputfile ( glob "./*.rgb565" ) {
open (INPUTFILE, "$inputfile") or die "Error: could not open raw image: $inputfile\n";
$input = <INPUTFILE>;
close INPUTFILE;
# deflate all rgb565 raw files found (compress zlib rfc1950)
$zlib_raw[$i] = compress($input,Z_BEST_COMPRESSION);
$i++;
}
die "Error: could not find any .rgb565 file under the specified folder: $logodir\n" unless $i > 0;
由代码可进一步确定,打包命令搜索的是工作文件夹中的.rgb565格式图片RAW文件。打包logobin过程。sub gen_header {
my $header_type = $_[0];
my $length = $_[1];
return pack(a4La32H*, "\x88\x16\x88\x58", $length, $header_type, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); 此段函数作用是增加文件头(header file),如同上图,添加了很多十六进制的 ff ff ff ,也就是很多个二进制中的1111111111111。
至此,打包脚本解读完毕,我们开始制作 .rgb565 格式的图片,百度一下,我们可知RGB565图片是一种DOS状态或者LINUX环境下,内存可以直接读取的文件格式。其图片两像素一字节,因为对于固定分辨率的图片,所有图片的大小相同。 选择PHOTOSHOP来制作RGB565格式图片。找好素材,使用Photoshop打开,并储存为BMP格式,选择16位 R5 G6 B5确定进行保存。
通过解析闪耀G500官方的logo.img,logo.img由一个.project文件列表,一个header_file和6张RAW图片构成,其中第一张为logo第一屏显示图片,其余为关机充电时显示的图片。在工具目录下建立一个文件夹./logo将原始图片放入。
.project和header在打包时会自动生成,这个不用管。准备好6张图片,使用Photoshop进行依次水平翻转和180度旋转后保存为16位R5 G6 B5格式BMP图片,开机第一屏命名为im1,其它电池图片依次命名为img2,img3,img4,img5,img6,后缀改为.rgb565。注意图片实际宽度最好比分辨率大20%,不然图片显示偏窄会重复平铺显示。最后一步:打包 ./repack-MT65xx.pl -logo logo logo.img 可以尝试制作卡刷包刷入或者使用flash-tool刷入了。对于闪耀,可以采用直接将PNG图片不做任何处理,直接按照上述重命名后打包即可。
对于闪耀G500 MTK6577,为了和官方保持格式一致,我选择修改打包脚本,默认搜索PNG格式图片进行打包。