Remove alpha channel in an image

陌路散爱 提交于 2019-11-27 09:55:15

问题


I have an app icon for iOS but Apple doesn't allow alpha to be in the image. How to remove this alpha channel? I only have the png image with me I don't have the source file as my friend did the image for me.


回答1:


Assuming you don't have another image editor, then you can open it in Preview on your Mac, and use the Export option to resave it in a different format- to ensure you get rid of the alpha channel, it might be best to export to JPG (best quality), then open that and export it as a PNG again.

Having said that, I suspect you're probably OK submitting an icon with a transparency channel as long as there's no actual transparency.




回答2:


The accepted answer to export to JPG, then back to PNG is not recommended.

  • It's an extra step in the process (2 exports)
  • JPG is lossy, so you will lose some image data

Here's a super fast and easy way to do this without the extra export or saving to (lossy) JPG:

Using Preview app (Mac):

  1. Open the image
  2. Command-Shift-S to Duplicate (creates a copy)
  3. Command-S to Save
  4. Deselect the "Alpha" checkbox
  5. Delete " copy" from filename (including the space)
    • This will overwrite your original, if you want to keep the original, just leave "copy" in the name
  6. Save
  7. Click 'Replace' to confirm you want to overwrite the original
    • Only necessary if you are overwriting your original



回答3:


If you are using the Preview app, there's no need to export then re-export between jpg and png, just choose export and below the filetype (PNG) you will see an alpha checkbox, unset it and save.




回答4:


if you need remove all alpha channel from directory with icons use this command:

for i in `ls *.png`; do convert $i -background black -alpha remove -alpha off $i; done

if you have Mac OS Mojave and had "convert command not found"

brew install imagemagick

To install Homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null



回答5:


There's no need to export the image to jpg first. You can uncheck the checkbox for the alpha channel and export directly from a png to a png without alpha channel in the preview app.




回答6:


You can try imagemagick (also easily resize for different sizes):

convert in.png -background black -alpha remove -alpha off -resize 1024x1024 out.png



回答7:


Just got the the following error when trying to upload my app to the iTunes app store:

iTunes Store Operations Failed

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

I confirmed that my app store icons did include the alpha channel by locating the asset in Finder and looking up its info (⌘+i). Underneath More info, it showed:

Alpha channel: Yes

Found the solution above to use Preview to remove the alpha channel by exporting it with the Alpha checkbox unchecked, but figured a way to batch export them since I had 18 assets I needed to strip the alpha channel from.

The way I got batch exporting to work was to select all my app icon assets in finder > right click > open (or open with preview)

All of the assets will now appear in the same window. Select all (⌘+a), and then select File > Export Selected Images… > Expand Options > uncheck the Alpha checkbox > Choose (your destination folder)

Done! All your images are now exported with the alpha channel stripped off.




回答8:


To remove alpha channel from png:

on Mac: Preview version 9.0 (macOS Sierra) can remove the alpha channel if you export or save the image.

Preview version 10.0 (944.2) (macOS High Sierra) does not remove the alpha channel. Both Export and/or Save does not remove the alpha channel from the image.




回答9:


the alpha check box is no longer there in preview




回答10:


Well, since you're on a Mac, next time you probably just want to use Automator. Convert the image to BMP (lossless) and back to PNG. Let it save and voila...




回答11:


I put Nikita Pushkar's very nice solution into a shell script that converts all iOS icons found in res/icon/ios:

It uses brew to install imagemagick if not available, so I guess it will run only on Mac.

#! /usr/bin/env bash
#
# remove alpha channel from PNG images when App Store upload fails
#
# taken from https://stackoverflow.com/a/52962485 - @Nikita Pushkar
#
# make sure to have brew installed, see https://brew.sh:
#   /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
#
# make sure to have imagemagick installed, see https://imagemagick.org:
#   brew install imagemagick
#

if command -v convert; then
    echo "imagemagick seems to be installed"
else
    echo "imagemagick not installed, trying to install ..."
    if command -v brew; then
        echo "brew is installed, using it"
    else
        echo "brew not installed, trying to install ..."
        /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    fi

    brew install imagemagick
fi

for i in `ls res/icon/ios/*.png`;
do
    echo "convert $i"
    convert $i -background white -alpha remove -alpha off $i;
done


来源:https://stackoverflow.com/questions/26171739/remove-alpha-channel-in-an-image

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!