How to manually create icns files using iconutil?

前端 未结 18 2021
无人共我
无人共我 2020-11-29 15:08

When I\'m validating my app I get this error:

the application bundle does not contain an icon in ICNS format, containing both a 512x512

18条回答
  •  無奈伤痛
    2020-11-29 15:26

    Here's a function mostly based off Henry's example (could be useful in ~/.bash_profile):

    mkicns() {
        if [[ -z "$*" ]] || [[ "${*##*.}" != "png" ]]; then
            echo "Input file invalid"
        else
            filename="${1%.*}"
            mkdir "$filename".iconset
            for i in 16 32 128 256 ; do
                n=$(( i * 2 ))
                sips -z $i $i "$1" --out "$filename".iconset/icon_${i}x${i}.png
                sips -z $n $n "$1" --out "$filename".iconset/icon_${i}x${i}@2x.png
                [[ $n -eq 512 ]] && \
                sips -z $n $n "$1" --out "$filename".iconset/icon_${n}x${n}.png
                (( i++ ))
            done
            cp "$1" "$filename".iconset/icon_512x512@2x.png
            iconutil -c icns "$filename".iconset
            rm -r "$filename".iconset
        fi
    }
    

    Usage:

    $ mkicns "filename.png"  # double-quote if spaces exist in filename
    

    Creates 10 sizes from 16x16 to 512x512@2x; accepts input images in .png format only.

提交回复
热议问题