LoginSignup
2
3

More than 3 years have passed since last update.

iOSアプリのアイコンをffmpegコマンドを使ってアルファチャンネルなしで各サイズを吐き出す

Last updated at Posted at 2020-02-24

はじめに

iosアプリのアイコンでは異なるサイズの画像をたくさん作る必要があります。
でこれがめちゃくちゃめんどくさいので、そのためのツールが色々あるのでまずはこれらを試してみることをお勧めします。

一番簡単にWebアプリ上できるのがこちらで
appicon

Macのアプリでできるのがこちらです
Image2icon

遭遇した問題 〜 アルファチャンネルが追加されてしまう 〜

今回自分はillustratorでアイコンを描き画像としてでexportしました。
そして上記のツールでアイコンを作成して、App Store Connectにアップロードしようとすると、以下のようなエラーが出ました。

Error ITMS-90717: "Invalid App Store Icon. The App Store Icon in the asset catalog in 'YourApp.app' can't be transparent nor contain an alpha channel."

image.png

アルファチャンネルが含まれているから使えないよーとのことですね。
なるほど書き出したアイコンにアルファチャンネルが含まれているのねーということで確認してみると、含まれていません。

apole_pngの情報.png

色々試してみたのですが、どのツールを使っても書き出し後の画像にはアルファチャンネルが含まれてしまいました。
Icon-1024_pngの情報_と_ダウンロード.png

解決法 〜 ffmpegでリサイズする 〜

事前に1024px x 1024pxの画像についてMacのプレビューアプリなど使ってアルファチャンネルを除去します。
ファイル > 書き出す でアルファチャンネルのチェックを外して保存します。

書き出す_と_output_1024_png.png

用意した画像にffmpegを使ったshell scriptを使い、異なるサイズの画像を一気に作成します。

multi_size_image_export.sh
# Export ios app icons by ffmpeg scale command
# usage: sh export_ios_icons.sh {path_to_your_img}
# example: sh export_ios_icons.sh ./app_icon.png

# sizes of images
# you can get other size images by editing thisarray
size=(20 40 60 29 58 87 80 120 180 76 152 167 1024)
for i in "${size[@]}"
do
   : 
    ffmpeg -i $1 -vf scale=$i:$i output_$ix$i.png
done

gist

作りたい画像サイズを配列で保持しておいて、
ここでリサイズした画像を生成します。

ffmpeg -i $1 -vf scale=$i:$i output_$ix$i.png
# ex) ffmpeg -i $1 -vf scale=1024:1024 output_1024x1024.png

実行時はこんな風にします。

sh multi_size_image_export.sh icon.png

実行すると以下のように各画像サイズのアイコンが出力され、アルファチャンネルがない状態も見事キープされていますね!
ios_icon.png
output_1024_pngの情報.png

めでたしめでたし :confetti_ball:

(あとで気づいたがそもそもjpgでやれば、こんな問題全く起きなかったかも...)

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3