iOS ImageMagick 圖片添加編譯號(hào)

引用文章http://www.reibang.com/p/a37e114b7e66
進(jìn)行了更新

  • 效果圖


    appicon顯示 版本號(hào)(編譯號(hào)).png
啟動(dòng)圖顯示 版本號(hào)(編譯號(hào)).gif
  • 安裝ImageMagick
brew install imagemagick

brew 安裝不成功,可以添加鏡像,用阿里云或者清華鏡像,mac新系統(tǒng)中在 .zshrc 文件中添加

# homebrew使用阿里云的鏡像源
#export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles
# homebrew 清華鏡像源
export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles

安裝 字體,這個(gè)目前是必須的,如只圖片合成圖片,不需要字體

brew install ghostscript 

安裝后驗(yàn)證,必須有字體

identify -list font 
字體安裝成功.png

操作步驟參照引用鏈接

icon添加編譯號(hào)腳本更新

#!/bin/bash

echo "?  ==========APPicon添加版本號(hào)開(kāi)始=========="
#######################################################
# 1春哨、檢查是否安裝了ImageMagick
#######################################################
echo "?? Checking installed ImageMagick"

convertPath=`which convert`

if [[ ! -f ${convertPath} || -z ${convertPath} ]]; then
    convertValidation=true;
else
    convertValidation=false;
fi

# 未安裝 提示并退出
if [ "$convertValidation" == true ]; then
    echo "? ImageMagick 未安裝,請(qǐng)使用命令安裝\n brew  install  imagemagick"
    exit 0;
else
    echo "? ImageMagick 已安裝"
fi

 
######################################################
# 2. 全局字段
######################################################

echo "??Product Name: ${PRODUCT_NAME}"
echo "??Bundle Identifier: ${BUNDLE_IDENTIFIER}"
echo "??Version: ${MARKETING_VERSION}"
echo "??Build: ${CURRENT_PROJECT_VERSION}"


# Assets中的appIcon文件名
APPICON_NAME="AppIcon"

# Assets中Debug環(huán)境的appIcon文件名
DEBUG_APPICON_NAME="${APPICON_NAME}-Debug"

# # 獲取app版本號(hào)
# APP_VERSION=$(/usr/libexec/PlistBuddy -c 'Print CFBundleShortVersionString' "${INFOPLIST_FILE}")

# # 獲取build號(hào)
# APP_BUILD_NUM=$(/usr/libexec/PlistBuddy -c 'Print CFBundleVersion' "${INFOPLIST_FILE}")

# xcode11 最新寫法
# 獲取app版本號(hào)
APP_VERSION="$MARKETING_VERSION"

# 獲取build號(hào)
APP_BUILD_NUM="$CURRENT_PROJECT_VERSION"

# Icon上顯示的文字內(nèi)容, 你可以在這里修改標(biāo)題格式
CAPTION="$APP_VERSION\n($APP_BUILD_NUM)"


echo "?? DEBUG_APPICON_NAME=$DEBUG_APPICON_NAME"
echo "?? 版本號(hào)=$APP_VERSION"
echo "?? 編譯號(hào)=$APP_BUILD_NUM"


######################################################
# 3. 復(fù)制AppIcon到AppIcon-Debug
######################################################
echo "?? Begin copy icon files"

# appicon路徑
APPICON_SET_PATH=`find $SRCROOT -name "${APPICON_NAME}.appiconset"`

echo "?? APPICON_SET_PATH=$APPICON_SET_PATH"
if [ "$APPICON_SET_PATH" = "" ]; then
    exitWithMessage "?  Get APPICON_SET_PATH failed." 0
fi

# appicon_debug路徑
ASSET_PATH=`echo $(dirname ${APPICON_SET_PATH})`
DEBUG_APPICON_SET_PATH="${ASSET_PATH}/${DEBUG_APPICON_NAME}.appiconset"
echo "?? DEBUG_APPICON_SET_PATH=$DEBUG_APPICON_SET_PATH"
if [ "$DEBUG_APPICON_SET_PATH" = "" ]; then
    exitWithMessage "?  Get DEBUG_APPICON_SET_PATH failed." 0
fi


# 刪除appicon_debug里的文件
rm -rf $DEBUG_APPICON_SET_PATH
if [ $? != 0 ];then
    exitWithMessage "?  Remove ${DEBUG_APPICON_SET_PATH} failed." 0
fi

# 復(fù)制appicon到appicon_debug
cp -rf $APPICON_SET_PATH $DEBUG_APPICON_SET_PATH
if [ $? != 0 ];then
    exitWithMessage "?  Copy ${APPICON_NAME} to ${DEBUG_APPICON_NAME} failed." 0
fi


echo "?  Finish copy icon files."



# # 處理icon,添加水印
# # Processing icon
function processIcon() {

BASE_IMAGE_PATH=$1
echo "BASE_IMAGE_PATH=$BASE_IMAGE_PATH"

BASE_FLODER_PATH=`dirname $BASE_IMAGE_PATH`
cd "$BASE_FLODER_PATH"

# 獲取圖片寬度
WIDTH=$(identify -format %w ${BASE_IMAGE_PATH})
echo "width $WIDTH"

FONT_SIZE=$(echo "$WIDTH * .15" | bc -l)
echo "font size $FONT_SIZE"

convert ${BASE_IMAGE_PATH}  -font Helvetica  -pointsize ${FONT_SIZE} \
-draw "gravity south \
fill white  text 0,12 '$APP_VERSION($APP_BUILD_NUM)'" \
${BASE_IMAGE_PATH}


}



#######################################################
# 4. 處理AppIcon-Debug
#######################################################
find "$DEBUG_APPICON_SET_PATH" -type f -name "*.png" -print0 |

while IFS= read -r -d '' file; do

echo "???? ${file}"
# 調(diào)用 processIcon 方法
processIcon "${file}"

done

echo "?  ==========APPicon添加版本號(hào)結(jié)束=========="

  • 同理,在啟動(dòng)圖添加編譯號(hào),使用LaunchScreen.storyboard,區(qū)別就是圖片文件夾的后綴
#!/bin/bash

echo "?  ==========啟動(dòng)圖添加版本號(hào)開(kāi)始=========="
#######################################################
# 1鲫忍、檢查是否安裝了ImageMagick
#######################################################
echo "?? Checking installed ImageMagick"

convertPath=`which convert`

if [[ ! -f ${convertPath} || -z ${convertPath} ]]; then
    convertValidation=true;
else
    convertValidation=false;
fi

# 未安裝 提示并退出
if [ "$convertValidation" == true ]; then
    echo "? ImageMagick 未安裝,請(qǐng)使用命令安裝\n brew  install  imagemagick"
    exit 0;
else
    echo "? ImageMagick 已安裝"
fi

 
######################################################
# 2. 全局字段
######################################################

echo "??Product Name: ${PRODUCT_NAME}"
echo "??Bundle Identifier: ${BUNDLE_IDENTIFIER}"
echo "??Version: ${MARKETING_VERSION}"
echo "??Build: ${CURRENT_PROJECT_VERSION}"


# Assets中的appIcon文件名
IMAGE_NAME="launch_image"

# Assets中Debug環(huán)境的appIcon文件名
BUNDLE_IMAGE_NAME="${IMAGE_NAME}-Build"

# # 獲取app版本號(hào)
# APP_VERSION=$(/usr/libexec/PlistBuddy -c 'Print CFBundleShortVersionString' "${INFOPLIST_FILE}")

# # 獲取build號(hào)
# APP_BUILD_NUM=$(/usr/libexec/PlistBuddy -c 'Print CFBundleVersion' "${INFOPLIST_FILE}")

# xcode11 最新寫法
# 獲取app版本號(hào)
APP_VERSION="$MARKETING_VERSION"

# 獲取build號(hào)
APP_BUILD_NUM="$CURRENT_PROJECT_VERSION"

# Icon上顯示的文字內(nèi)容, 你可以在這里修改標(biāo)題格式
CAPTION="$APP_VERSION\n($APP_BUILD_NUM)"


echo "?? BUNDLE_IMAGE_NAME=$BUNDLE_IMAGE_NAME"
echo "?? 版本號(hào)=$APP_VERSION"
echo "?? 編譯號(hào)=$APP_BUILD_NUM"


######################################################
# 3. 復(fù)制AppIcon到AppIcon-Debug
######################################################
echo "?? Begin copy icon files"

# appicon路徑 .imageset 后綴
APPICON_SET_PATH=`find $SRCROOT -name "${IMAGE_NAME}.imageset"`

echo "?? APPICON_SET_PATH=$APPICON_SET_PATH"
if [ "$APPICON_SET_PATH" = "" ]; then
    exitWithMessage "?  Get APPICON_SET_PATH failed." 0
fi

# appicon_debug路徑 .imageset 后綴
ASSET_PATH=`echo $(dirname ${APPICON_SET_PATH})`
DEBUG_APPICON_SET_PATH="${ASSET_PATH}/${BUNDLE_IMAGE_NAME}.imageset"
echo "?? DEBUG_APPICON_SET_PATH=$DEBUG_APPICON_SET_PATH"
if [ "$DEBUG_APPICON_SET_PATH" = "" ]; then
    exitWithMessage "?  Get DEBUG_APPICON_SET_PATH failed." 0
fi


# 刪除appicon_debug里的文件
rm -rf $DEBUG_APPICON_SET_PATH
if [ $? != 0 ];then
    exitWithMessage "?  Remove ${DEBUG_APPICON_SET_PATH} failed." 0
fi

# 復(fù)制appicon到appicon_debug
cp -rf $APPICON_SET_PATH $DEBUG_APPICON_SET_PATH
if [ $? != 0 ];then
    exitWithMessage "?  Copy ${IMAGE_NAME} to ${BUNDLE_IMAGE_NAME} failed." 0
fi


echo "?  Finish copy icon files."



# # 處理icon,添加水印
# # Processing icon
function processIcon() {

BASE_IMAGE_PATH=$1
echo "BASE_IMAGE_PATH=$BASE_IMAGE_PATH"

BASE_FLODER_PATH=`dirname $BASE_IMAGE_PATH`
cd "$BASE_FLODER_PATH"

# 獲取圖片寬度
WIDTH=$(identify -format %w ${BASE_IMAGE_PATH})
echo "width $WIDTH"

FONT_SIZE=$(echo "$WIDTH * .15" | bc -l)
echo "font size $FONT_SIZE"

convert ${BASE_IMAGE_PATH}  -font Helvetica  -pointsize ${FONT_SIZE} \
-draw "gravity south \
fill white  text 0,12 '$APP_VERSION($APP_BUILD_NUM)'" \
${BASE_IMAGE_PATH}


}



#######################################################
# 4. 處理AppIcon-Debug
#######################################################
find "$DEBUG_APPICON_SET_PATH" -type f -name "*.png" -print0 |

while IFS= read -r -d '' file; do

echo "???? ${file}"
# 調(diào)用 processIcon 方法
processIcon "${file}"

done

echo "?  ==========啟動(dòng)圖添加版本號(hào)結(jié)束=========="

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市芭毙,隨后出現(xiàn)的幾起案子袱饭,更是在濱河造成了極大的恐慌孟害,老刑警劉巖腕让,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晦墙,死亡現(xiàn)場(chǎng)離奇詭異悦昵,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)晌畅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門但指,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人抗楔,你說(shuō)我怎么就攤上這事棋凳。” “怎么了连躏?”我有些...
    開(kāi)封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵剩岳,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我入热,道長(zhǎng)拍棕,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任勺良,我火速辦了婚禮绰播,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘尚困。我一直安慰自己蠢箩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布事甜。 她就那樣靜靜地躺著谬泌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逻谦。 梳的紋絲不亂的頭發(fā)上呵萨,一...
    開(kāi)封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音跨跨,去河邊找鬼潮峦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勇婴,可吹牛的內(nèi)容都是我干的忱嘹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼耕渴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拘悦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起橱脸,我...
    開(kāi)封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤础米,失蹤者是張志新(化名)和其女友劉穎分苇,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體屁桑,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡医寿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蘑斧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片靖秩。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖竖瘾,靈堂內(nèi)的尸體忽然破棺而出沟突,到底是詐尸還是另有隱情,我是刑警寧澤捕传,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布惠拭,位于F島的核電站,受9級(jí)特大地震影響庸论,放射性物質(zhì)發(fā)生泄漏职辅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一葡公、第九天 我趴在偏房一處隱蔽的房頂上張望罐农。 院中可真熱鬧条霜,春花似錦催什、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至拆内,卻和暖如春旋圆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背麸恍。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工灵巧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抹沪。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓刻肄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親融欧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子敏弃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354