材料
- 準備一張1024*1024的圖片Icon.
- 準備腳本文件.
環境
Mac系統.
shell指令(Mac系統自帶.無須安裝.
創建一個腳本文件,以下是代碼.只要命名的後綴的為.sh即可並保存.例如:GenerateIcon.sh
打開你的終端, cd到GenerateIcon.sh所在的目錄下.例如放到Desktop中
cd Destop
然後終端輸入命令啟動腳本,$1 為你的1024圖片Icon路徑,$2 為你的生成文件夾路徑
格式.
sh xxx.sh $1 $2
例如
sh GenerateIcon.sh ./1024.png ./ouput
*如果你覺得染後
#!/bin/bash
#這是用於生成AppIconLOGO的腳本程序
#author Senfor
#為保證腳本正常的運行.
#version
#GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
#Copyright (C) 2007 Free Software Foundation, Inc.
#更改圖片路徑和文件輸出路徑.
src_file=$1
dst_path=$2
# \033[字背景色;字體顏色m字符串[0m
# 97亮白色背景 32綠色
# \033[97;32m
#warn()警告顏色 由於寬度和高度不相等
warn() {
local yellow="\033[1;33m"
local normal="\033[0m"
echo "[${yellow}WARNING${normal}] $1 , 圖片的寬度和高度不相等"
}
#error()警告顏色 圖片出錯/不存在
error() {
local red="\033[1;31m"
local normal="\033[0m"
echo "[${red}ERROR${normal}] $1 ,圖片出錯/不存在"
}
#info()綠色顏色 輸出信息
info() {
local green="\033[1;32m"
local normal="\033[0m"
echo "[${green}INFO${normal}] $1 ,輸出信息"
}
VERSION=1.0
AUTHOR=Senfor
usage() {
PATHIMGFILE=`basename $0`
cat << EOF
$PATHIMGFILE version $VERSION by $AUTHOR
參數
USAGE: $PATHIMGFILE
DESCRIPTION:
用於腳本化生成ICON
確保腳本當前目錄下有圖片路徑.
可根據的自己的需求是否修改圖片路徑.
案例:
$PATHIMGFILE
EOF
exit 1
}
while getopts 'h' arg; do
case $arg in
h)
usage
;;
?)
# OPTARG
usage
;;
esac
done
shift $(($OPTIND - 1))
#不需要判定腳本命令
#[ $# -ne 2 ] && usage
#命令指令開始起點,源文件和生成文件夾的路徑,可根據項目修改.
startGenerate(){
# src_file=./1024.png
# dst_path=./output
# check source file
[ ! -f "$src_file" ] && { error "The source file $src_file does not exist, please check it."; exit -1; }
# check width and height
src_width=`sips -g pixelWidth $src_file 2>/dev/null|awk '/pixelWidth:/{print $NF}'`
src_height=`sips -g pixelHeight $src_file 2>/dev/null|awk '/pixelHeight:/{print $NF}'`
[ -z "$src_width" ] && { error "The source file $src_file is not a image file, please check it."; exit -1; }
if [ $src_width -ne $src_height ];then
warn "The height and width of the source image are different, will cause image deformation."
fi
# create dst directory
[ ! -d "$dst_path" ] && mkdir -p "$dst_path"
# 修改AppIcon尺寸
sizes_mapper=`cat << EOF
Icon-20@2x 40
Icon-20@3x 60
Icon-29@2x 58
Icon-29@3x 87
Icon-40@2x 80
Icon-40@3x 120
Icon-60@2x 120
Icon-60@3x 180
Icon-1024 1024`
OLD_IFS=$IFS
IFS=$'\n'
srgb_profile='/System/Library/ColorSync/Profiles/sRGB Profile.icc'
for line in $sizes_mapper
do
name=`echo $line|awk '{print $1}'`
size=`echo $line|awk '{print $2}'`
#生成圖片
info "Generate $name.png ..."
if [ -f $srgb_profile ];then
sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z $size $size $src_file --out $dst_path/$name.png >/dev/null 2>&1
else
sips -z $size $size $src_file --out $dst_path/$name.png >/dev/null
fi
done
info "Congratulation. 所有圖片生成成功,路徑在$dst_path."
IFS=$OLD_IFS
}
#執行指令
startGenerate