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.