Remover canal alfa em uma imagem


101

Eu tenho um ícone de aplicativo para iOS, mas a Apple não permite que alfa esteja na imagem. Como remover este canal alfa? Eu só tenho a imagem png comigo. Não tenho o arquivo de origem, pois meu amigo fez a imagem para mim.


5
Abrir o PNG em um editor de imagens e salvar novamente com o canal alfa desativado?
Alexander O'Mara,

1
A resposta aceita perde dados de imagem e tem etapas extras desnecessárias. Em vez disso, consulte a solução abaixo: stackoverflow.com/a/38256612/5764320
Mycah

Também fiz uma pequena ferramenta, onde você pode simplesmente arrastar e soltar suas imagens e remover o canal alfa, sem perder os dados da imagem: removealphachannel.com
Ali Nasserzadeh

Respostas:


48

Supondo que você não tenha outro editor de imagens, você pode abri-lo na visualização em seu Mac e usar a opção Exportar para salvá-lo novamente em um formato diferente - para garantir que você se livre do canal alfa, pode ser melhor exportar para JPG (melhor qualidade), abra-o e exporte-o como PNG novamente.

Dito isso, suspeito que você provavelmente está OK em enviar um ícone com um canal de transparência, desde que não haja transparência real.


9
Isso resultará em uma pequena perda de qualidade e também em um arquivo PNG maior, pois o formato PNG não é adequado para compactar o tipo de artefatos que você obtém ao produzir um arquivo JPG. Além disso, a Apple rejeita imagens PNG com canais alfa, mesmo que não haja transparência real.
philwilks

Experimentei uma versão mais antiga do macOS Sierra e funcionou.
Bhaumik Desai

8
Na verdade, você pode simplesmente desmarcar a caixa de seleção "Alpha" ao exportar para PNG. Não há necessidade de exportar para JPG primeiro.
Petr Peller

Como fazer operação em dados de imagem para reduzir os canais de imagem de 4 para 3?
voldikss

4
Não serão aceitos PNGs com canal de transparência, independentemente de haver transparência na imagem ou não.
gbarnett

236

A resposta aceita para exportar para JPG e, em seguida, voltar para PNG não é recomendada.

  • É uma etapa extra no processo (2 exportações)
  • JPG apresenta perdas, então você perderá alguns dados da imagem

Esta é uma maneira super rápida e fácil de fazer isso sem precisar exportar ou salvar em arquivos JPG (com perdas):

Usando o aplicativo de visualização (Mac):

  1. Abra a imagem
  2. Command-Shift-S para duplicar (cria uma cópia)
  3. Command-S para salvar
  4. Desmarque a caixa de seleção "Alfa"
  5. Exclua "cópia" do nome do arquivo (incluindo o espaço)
    • Isso irá sobrescrever seu original, se você quiser manter o original, apenas deixe "cópia" no nome
  6. Salve 
  7. Clique em 'Substituir' para confirmar que deseja substituir o original
    • Só é necessário se você estiver substituindo o original remover canal alfa

2
^ esta é uma resposta melhor, IMHO. JPG não suporta canais alfa e isso permitirá que você use um formato LOSSLESS e lide com o canal alfa (em vez de evitá-lo).
Cody-PHP-jQuery

4
Não entendo porque a equipe da iTunes Store mostra esse erro (canal Alfa) nos ícones do app de relógio, quando nas versões anteriores eles os consideram corretos. Tempo perdido! Obrigado Apple Inc!
Markus

Muito obrigado pela solução sem perdas!
Shchvova

10
Com o macOS High Sierra, a visualização parece salvar PNGs sempre COM um canal alfa, mesmo se a caixa de seleção estiver desmarcada. Se eu abrir o arquivo salvo, a caixa de informações sempre dirá "Possui Alpha: 1". A ferramenta goles também me diz hasAlpha: yes. Além disso, a iTunes Store reclama sobre o canal alfa indesejado ("Falha na operação - O ícone da App Store ... não pode ser transparente nem conter um canal alfa").
Stefan,

2
Como mencionado por @Psychomentally, ImageMagick finalmente funcionou para mim: convert in.png -alpha off out.png. Ré. Visualização: ligar / desligar "alfa" na caixa de diálogo de exportação altera o tamanho do arquivo previsto, mas salvar sempre grava o arquivo com as informações alfa (e o tamanho correspondente).
Stefan

53

se você precisar remover todos os canais alfa do diretório com ícones, use este comando:

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

se você tiver Mac OS Mojave e tiver "comando de conversão não encontrado"

brew install imagemagick

Para instalar o Homebrew

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

1
isso dá uma imagem de saída de 8 bits em vez de 24 bits
Stepan Yakovenko

Se você mudar -alpha remove -alpha off $i;para -alpha remove -alpha off png24:$i; ele, a saída será um PNG de 24 bits
Lawrence Ryerson Davis IV

37

Se você estiver usando o aplicativo de visualização, não há necessidade de exportar e reexportar entre jpg e png, apenas escolha exportar e abaixo do tipo de arquivo (PNG) você verá uma caixa de seleção alfa, desmarque-a e salve.


4
Eu costumava usar esse método, mas no MacOS High Sierra, desmarcar Alpha na visualização não faz nada a menos que você escolha JPG como saída. Se eu tentar abrir um PNG, Exportar PNG sem Alpha e abrir o novo PNG, ele tem um canal Alpha.
Dan Loughney

Trabalhou para mim em High Sierra (10.13.4)
fl034 de

13

Você pode tentar imagemagick (também pode redimensionar facilmente para tamanhos diferentes):

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

como faço para selecionar o arquivo png no cmd bash
Marlhex

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: comando não encontrado
Marlhex

13

Não há necessidade de exportar a imagem para jpg primeiro. Você pode desmarcar a caixa de seleção do canal alfa e exportar diretamente de um png para um png sem canal alfa no aplicativo de visualização.

insira a descrição da imagem aqui


9

Acabei de receber o seguinte erro ao tentar enviar meu aplicativo para a loja de aplicativos do iTunes:

Falha nas operações da iTunes Store

ERROR ITMS-90717: "Ícone da App Store inválido. O ícone da App Store no catálogo de ativos em 'MyApp.app' não pode ser transparente nem conter um canal alfa."

Confirmei que os ícones da minha app store incluíam o canal alfa localizando o ativo no Finder e procurando suas informações (⌘ + i). Abaixo de Mais informações, mostrava:

Canal alfa: Sim

Encontrei a solução acima para usar o Preview para remover o canal alfa, exportando-o com a caixa de seleção Alpha desmarcada, mas descobri uma maneira de exportá-los em lote, pois eu tinha 18 ativos dos quais precisava remover o canal alfa.

A maneira como a exportação em lote funcionou foi selecionando todos os ativos de ícones do meu aplicativo no localizador> clique com o botão direito> abrir (ou abrir com visualização)

Todos os ativos agora aparecerão na mesma janela. Selecione todos (⌘ + a) e selecione Arquivo> Exportar imagens selecionadas ...> Opções de expansão> desmarque a caixa de seleção Alfa> Escolha (sua pasta de destino)

Feito! Todas as suas imagens agora são exportadas com o canal alfa removido.


1
Tentei o mesmo, mas não está mais funcionando em High Sierra. Canais alfa não são removidos na visualização.
Satheeshwaran

6

Para remover o canal alfa do png:

no Mac: a versão de visualização 9.0 (macOS Sierra) pode remover o canal alfa se você exportar ou salvar a imagem.

A versão de visualização 10.0 (944.2) (macOS High Sierra) não remove o canal alfa. Exportar e / ou Salvar não remove o canal alfa da imagem.


2
Isso destaca 2 problemas recentes do facepalm da Apple .... High Sierra ignorando uma opção de salvar E o motivo pelo qual muitas pessoas estão aqui, o Xcode repentinamente não pode carregar aplicativos por causa da transparência do ícone
MobileVet

4

Tendo encontrado o mesmo problema no contexto de aplicativos Flutter, dediquei um site simples para esta tarefa, onde você pode remover canais alfa de imagens:

Remover canal alfa

Basicamente, eu executo o ImageMagick usando o Web Assembly diretamente no navegador, então nenhuma de suas imagens é carregada e você não precisa de nenhuma outra ferramenta como o Gimp.


2

a caixa de seleção alfa não está mais na visualização


Ainda consigo ver e usar, você tem que exportar o arquivo.
Oscar

2
Eu posso apoiar isso, acabou.
Wep0n

2

Bem, já que você está em um Mac, da próxima vez você provavelmente só vai querer usar o Automator. Converta a imagem em BMP (sem perdas) e de volta em PNG. Deixe isso salvar e voila ...


0

Eu coloquei a solução muito boa de Nikita Pushkar em um script de shell que converte todos os ícones iOS encontrados em res/icon/ios:

Ele usa o brew para instalar o Imagemagick se não estiver disponível, então eu acho que só funcionará no 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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.