画像のアルファチャネルを削除する


101

iOS用のアプリアイコンがありますが、Appleは画像にアルファを含めることを許可していません。このアルファチャネルを削除する方法?私が持っているのはpng画像だけで、ソースファイルはありません。友人が画像を処理してくれたからです。


5
画像エディターでPNGを開き、アルファチャネルを無効にして再度保存しますか?
Alexander O'Mara 2014年

1
受け入れられた回答は画像データを失い、余分な不要なステップがあります。代わりに以下のソリューションを参照してください:stackoverflow.com/a/38256612/5764320
Mycah

:私はまた、あなたは、単にドラッグして、画像をドロップすると、画像データを失うことなく、アルファチャンネルを削除することができます小さなツール、作ったremovealphachannel.comを
アリNasserzadeh

回答:


48

別の画像エディターがない場合は、Macのプレビューで開き、[エクスポート]オプションを使用して別の形式で再保存します。アルファチャネルを確実に削除するには、エクスポートすることをお勧めしますJPG(最高品質)に変換してから開き、再度PNGとしてエクスポートします。

とは言っても、実際の透明度がなければ、透明度チャネルのあるアイコンを送信しても問題ないでしょう。


9
これにより、品質が少し低下します。また、JPGファイルを生成するときに取得するアーティファクトの種類を圧縮するのに適したPNG形式ではないため、PNGファイルが大きくなります。さらに、Appleは、実際の透明度がない場合でも、アルファチャネルを持つPNG画像を拒否します。
philwilks

古いバージョンのmacOS Sierraを試してみましたが、うまくいきました。
Bhaumik Desai 2017年

8
実際には、PNGにエクスポートするときに「Alpha」チェックボックスをオフにするだけです。最初にJPGにエクスポートする必要はありません。
Petr

画像データを操作して画像チャネルを4から3に減らす方法は?
voldikss

4
透明度が画像に表示されているかどうかに関係なく、透明度チャネルのあるPNGは受け入れられません。
gbarnett

236

JPGにエクスポートしてからPNGに戻すという承認された回答はお勧めしません。

  • これはプロセスの追加ステップです(2つのエクスポート)
  • JPGは非可逆であるため、一部の画像データが失われます

これは、余分なエクスポートや(非可逆)JPGへの保存をせずにこれを行うための超高速で簡単な方法です。

プレビューアプリの使用(Mac):

  1. 画像を開く
  2. Command-Shift-Sで複製(コピーを作成)
  3. 保存するコマンド-S
  4. [アルファ]チェックボックスをオフにします
  5. ファイル名から「コピー」を削除します(スペースを含む)
    • これはオリジナルを上書きします。オリジナルを保持したい場合は、名前に「コピー」を残してください
  6. 保存する
  7. 「置換」クリックして、オリジナルを上書きすることを確認します
    • オリジナルを上書きする場合にのみ必要 アルファチャネルを削除する

2
^これはより良い答えです、私見。JPGはアルファチャネルをサポートしていません。これにより、LOSSLESS形式を使用して、アルファチャネルを(回避せずに)処理できます。
Cody-PHP-jQuery 2016

4
以前のバージョンではそれらが正しいと見なされた場合、iTunes Storeチームがウォッチアプリのアイコンにこのエラー(アルファチャネル)を表示する理由がわかりません。時間を失った!Apple Incに感謝します!
マーカス

ロスレスソリューションに感謝します。
Shchvova 16

10
macOS High Sierraでは、チェックボックスがオフの場合でも、プレビューは常にアルファチャネルを使用してPNGを保存するようです。保存したファイルを開くと、情報ボックスには常に「Has Alpha:1」と表示されます。sipsツールも教えてくれhasAlpha: yesます。さらに、iTunes Storeは不要なアルファチャネルについて不平を言っています(「操作に失敗しました– App Storeアイコン…を透明にしたり、アルファチャネルを含めることはできません」)。
Stefan

2
@Psychomentallyで述べたように、ImageMagickはついに私のために働きました:convert in.png -alpha off out.png。再 プレビュー:エクスポートダイアログで「アルファ」のオン/オフを切り替えると、予測されるファイルサイズが変更されますが、保存すると、常にアルファ情報(および対応するサイズ)でファイルが書き込まれます。
ステファン

52

アイコン付きのディレクトリからすべてのアルファチャネルを削除する必要がある場合は、次のコマンドを使用します。

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

Mac OS Mojaveを使用していて、「変換コマンドが見つからない」場合

brew install imagemagick

Homebrewをインストールするには

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

1
これにより、24ビットではなく8ビットの出力画像が得られます
Stepan Yakovenko

これに変更-alpha remove -alpha off $i;する-alpha remove -alpha off png24:$i; と、24ビットpngが出力されます
Lawrence Ryerson Davis IV

37

プレビューアプリを使用している場合は、エクスポートしてからjpgとpngの間で再エクスポートする必要はありません。エクスポートを選択すると、ファイルタイプ(PNG)の下にアルファチェックボックスが表示され、設定を解除して保存します。


4
以前はこの方法を使用していましたが、MacOS High Sierraでは、出力でJPGを選択しない限り、プレビューでアルファをオフにしても何も起こりません。PNGを開こうとして、PNGをアルファなしでエクスポートし、新しいPNGを開こうとすると、アルファチャネルがあります。
Dan Loughney、2017年

ハイシエラ(10.13.4)で私のために働いた
fl034

13

imagemagickを試すことができます(さまざまなサイズに簡単にサイズ変更できます)。

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


Marlhexs-MacBook-Pro:Edgar marlhex $ ls LUNCH SCREEN.jpg nuevo icon-5.png LUNCH SCREEN.png nuevo icon-51024 copy.jpg nuevo icon-5.jpg nuevo icon-51024.png Marlhexs-MacBook-Pro:Edgar marlhex $ nuevo icon-51024.png -bash:nuevo:コマンドが見つかりません
Marlhex

13

最初に画像をjpgにエクスポートする必要はありません。アルファチャネルのチェックボックスをオフにして、プレビューアプリでpngからアルファチャネルのないpngに直接エクスポートできます。

ここに画像の説明を入力してください


9

アプリをiTunesアプリストアにアップロードしようとすると、次のエラーが表示されます。

iTunesストアの操作に失敗しました

エラーITMS-90717:「無効なApp Storeアイコン。'MyApp.app 'のアセットカタログのApp Storeアイコンは、透明にすることも、アルファチャネルを含めることもできません。」

私のApp Storeアイコンには、Finderでアセットを見つけてその情報を検索することにより、アルファチャネルが含まれていることを確認しました(⌘+ i)。詳細の下に、それは示しました:

アルファチャネル:はい

アルファチェックボックスをオフにしてエクスポートすることでプレビューを使用してアルファチャネルを削除する上記の解決策を見つけましたが、18のアセットからアルファチャネルを削除する必要があるため、バッチエクスポートする方法を見つけました。

バッチエクスポートが機能するようにするには、ファインダーですべてのアプリアイコンアセットを選択し、右クリックして開く(またはプレビュー付きで開く)ようにしました

すべてのアセットが同じウィンドウに表示されます。すべて選択(⌘+ a)して、[ファイル]> [選択した画像をエクスポート]>> [オプションを展開]> [アルファ]チェックボックスをオフ> [選択](宛先フォルダ)を選択します。

できた!これで、すべての画像がアルファチャネルを取り除いてエクスポートされました。


1
同じことを試しましたが、High Sierraではもう機能していません。アルファチャネルはプレビューでは削除されません。
Satheeshwaran

6

PNGからアルファチャネルを削除するには:

Macの場合:画像をエクスポートまたは保存すると、プレビューバージョン9.0(macOS Sierra)でアルファチャネルを削除できます。

プレビューバージョン10.0(944.2)(macOS High Sierra)では、アルファチャネルは削除されません。エクスポートまたは保存、あるいはその両方は、画像からアルファチャネルを削除しません。


2
これは、Appleによる最近のfacepalmの2つの問題を浮き彫りにします。高シエラが保存オプションを無視し、多くの人がここにいる理由、アイコンの透明性のためにXcodeが突然アプリをアップロードできない
MobileVet

4

Flutterアプリケーションのコンテキストで同じ問題が発生したため、画像のアルファチャネルを削除できる簡単なWebサイトをこのタスク専用に用意しました。

アルファチャネルを削除

基本的に私はブラウザで直接Webアセンブリを使用してImageMagickを実行するので、画像はアップロードされず、Gimpのような他のツールは必要ありません。


2

アルファチェックボックスはプレビューに表示されなくなりました


私はまだそれを見て使用できますが、ファイルをエクスポートする必要があります。
オスカー

2
私はこれを二番目にすることができます、それはなくなっています。
Wep0n 2018

2

まあ、あなたはMacを使っているので、次回はおそらくAutomatorを使いたいだけでしょう。画像をBMP(可逆)に変換し、PNGに戻します。保存して出来上がり...


0

Nikita Pushkarの非常に優れたソリューションを、次の場所にあるすべてのiOSアイコンを変換するシェルスクリプトに入れましたres/icon/ios

利用できない場合はbrewを使用してimagemagickをインストールするため、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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.