Android 开发中经常会碰到包体优化的需求,减小包体首先想到的是删除不需要的图片资源,减小必须图片资源的分辨率。不需要的图片资源的删除可以借用 Lint 实现,而减小图片资源的分辨率可以使用 Linux 下的 convert 命令。
常用命令如下:
图片格式转换:convert
示例:convert input.jpg output.png,将图像 input.jpg 转换为 output.png。
旋转图像:convert -rotate
示例:convert -rotate 90 input.png output.png,将图像 input.png 顺时针旋转90°保存为 output.png。
裁剪图像:convert -crop
示例:convert -crop 100x100+10+10 input.png output.png,将input.png从(10,10)为起点,裁剪一块100x100像素的部分,保存为output.png。
生成缩略图:convert -resize 或 convert -sample
示例:convert -resize 100x100 input.png output.png,将图像 input.png 按比例缩放为100px宽或高的图像保存到output.png。
示例:convert -resize 50%x50% input.png output.png,将图像 input.png 按比例缩放为原来的一半保存到output.png。
示例:convert -sample 100x100 input.png output.png,将图像 input.png 按比例缩放为100px宽或高的图像保存到output.png。
示例:convert -sample 50%x50% input.png output.png,将图像 input.png 按比例缩放为原来的一半保存到output.png。
示例:convert -resize 100x100! input.png output.png,将图像 input.png 不按比例缩放为宽高分别为100px图像保存到output.png。
convert -resize 和 convert -sample区别:convert -sample生成缩略图较快,画质较低,适合小图压缩;convert -resize生成缩略图较慢,画质高,适合大图压缩。
我们可以使用shell写一个resize.sh脚本,方便处理图片。
#!/bin/bash
# 更改图片分辨率
# $1 为要修改的图片名称,比如test.png
# $2 为修改后的的图片与原图的大小百分比, 比如50%x50%
# 示例执行方法:在控制台输入bash resize.sh test.png 50%x50%
function resize() {
find . -type f -name "$1" | while read line
do
echo "Proceed ${line} ..."
convert -resize $2 $line $line
done
}
resize $1 $2
生成黑白图:convert -monochrome
示例:convert -monochrome input.png output.png,将图像 input.png 转换为黑白色的 output.png。
来源:CSDN
作者:启明星的笔记
链接:https://blog.csdn.net/u014743238/article/details/104636812