一、文字图片转换
png 图片生成源码:development/tools/recovery_l10n/
recovery_l10n 在 o上已经没有源码了,需要从kk上移植过来
原生的源代码有个bug,导致读取出来的Locale[]数组值全部为空,无法完成图片的制作。
diff --git a/tools/recovery_l10n/src/com/android/recovery_l10n/Main.java b/tools/recovery_l10n/src/com/android/recovery_l10n/Main.java
index 3f2bebe..5da5592 100755
--- a/tools/recovery_l10n/src/com/android/recovery_l10n/Main.java
+++ b/tools/recovery_l10n/src/com/android/recovery_l10n/Main.java
@@ -150,7 +150,7 @@ public class Main extends Activity {
Arrays.sort(localeNames);
ArrayList<Locale> locales = new ArrayList<Locale>();
for (String ln : localeNames) {
- int u = ln.indexOf('_');
+ int u = ln.indexOf('-');
if (u >= 0) {
Log.i(TAG, "locale = " + ln);
locales.add(new Locale(ln.substring(0, u), ln.substring(u+1)));
1、res\values-zh-rCN\strings.xml
用于显示中文文字,可以修改里面的中文文字为您所需要的。
2、res\layout\main.xml
用于改变文字格式,如大小、字体等。
3、然后使用mm编译出out\target\product…\system\app\RecoveryLocalizer.apk
4、安装打开后选择需要的文字图片后点击go按钮。
5、取出图片:adb pull data/data/com.android.recovery_l10n/files/text-out.png
6、生成的图片还不能直接替换系统图片,需要在Ubuntu环境下作进一步处理
(如未安装 pngcrush,请先安装 :sudo apt-get install pngcrush
)
pngcrush -c 0 text-out.png output.png
二、android5.1 logo动画
android5.1的logo动画是单张多帧PNG图片
1、安装python、pip、PIL 图形库
2、python interlace-frames.py .\src1.png .\src2.png .\src3.png .\src4.png .\src5.png .\src6.png .\src7.png .\src8.png .\dst.png
三、android8.1 logo动画
android8.1的logo动画是多张8位深度png的图片
用 imagemagick 工具的 convert 命令转换 sudo apt-get install imagemagick
//convert src.png -colorspace gray dst.png
convert image.png -define png:color-type=2 result.png
bit_depth(8)channels(3)color_type(2)
// 批量转换图片的脚本
#!/bin/bash
# get all filename in specified path
path=$1
files=$(ls $path)
for filename in `find . -name "*.png"`;
do
echo "convert"$filename
convert $filename -define png:color-type=2 $filename
done
查看png图片信息
sudo apt-get install pngtools
pnginfo bootable/recovery/res-mdpi/images/error_text.png
显示结果如下:
error_text.png...
Image Width: 163 Image Length: 2582
Bitdepth (Bits/Sample): 8
Channels (Samples/Pixel): 1
Pixel depth (Pixel Depth): 8
Colour Type (Photometric Interpretation): GRAYSCALE
Image filter: Single row per byte filter
Interlacing: No interlacing
Compression Scheme: Deflate method 8, 32k window
Resolution: 0, 0 (unit unknown)
FillOrder: msb-to-lsb
Byte Order: Network (Big Endian)
Number of text strings: 0
使用 convert 命令转换之后查看图片信息显示结果如下:
error_text.png...
Image Width: 163 Image Length: 2582
Bitdepth (Bits/Sample): 8
Channels (Samples/Pixel): 3
Pixel depth (Pixel Depth): 24
Colour Type (Photometric Interpretation): RGB
Image filter: Single row per byte filter
Interlacing: No interlacing
Compression Scheme: Deflate method 8, 32k window
Resolution: 0, 0 (unit unknown)
FillOrder: msb-to-lsb
Byte Order: Network (Big Endian)
Number of text strings: 0
转换之后的 channels 和 pixel depth 和 Colour Type 都已经发生了变化