Eliminar el canal alfa en una imagen

101

Tengo un ícono de aplicación para iOS, pero Apple no permite que el alfa esté en la imagen. ¿Cómo eliminar este canal alfa? Solo tengo la imagen png conmigo. No tengo el archivo fuente, ya que mi amigo hizo la imagen por mí.

zbz.lvlv
fuente
5
¿Abrir el PNG en un editor de imágenes y volver a guardar con el canal alfa desactivado?
Alexander O'Mara
1
La respuesta aceptada pierde datos de imagen y tiene un paso adicional innecesario. En su lugar, consulte la solución a continuación: stackoverflow.com/a/38256612/5764320
Mycah
También he creado una pequeña herramienta, donde puede simplemente arrastrar y soltar sus imágenes y eliminar el canal alfa, sin perder datos de imagen: removealphachannel.com
Ali Nasserzadeh

Respuestas:

48

Suponiendo que no tiene otro editor de imágenes, puede abrirlo en Vista previa en su Mac y usar la opción Exportar para volver a guardarlo en un formato diferente; para asegurarse de deshacerse del canal alfa, podría ser mejor exportar a JPG (mejor calidad), luego ábralo y expórtelo como PNG nuevamente.

Habiendo dicho eso, sospecho que probablemente estés bien enviando un ícono con un canal de transparencia siempre que no haya transparencia real.

danielquokka
fuente
9
Esto resultará en una pequeña pérdida de calidad y también en un archivo PNG más grande, ya que el formato PNG no es adecuado para comprimir el tipo de artefactos que se obtienen al producir un archivo JPG. Además, Apple rechaza las imágenes PNG con canales alfa incluso si no hay transparencia real.
philwilks
Probé una versión anterior de macOS Sierra y funcionó.
Bhaumik Desai
8
En realidad, puede desmarcar la casilla de verificación "Alfa" mientras exporta a PNG. No es necesario exportar a JPG primero.
Petr Peller
¿Cómo operar con datos de imagen para reducir los canales de imagen de 4 a 3?
voldikss
4
No se aceptarán archivos PNG con un canal de transparencia, sin importar si la transparencia se muestra en la imagen o no.
gbarnett
236

No se recomienda la respuesta aceptada para exportar a JPG y luego volver a PNG.

  • Es un paso adicional en el proceso (2 exportaciones)
  • JPG tiene pérdida, por lo que perderá algunos datos de imagen

Aquí hay una manera súper rápida y fácil de hacer esto sin la exportación adicional o sin guardar en JPG (con pérdida):

Usando la aplicación Vista previa (Mac):

  1. Abre la imagen
  2. Comando-Shift-S para duplicar (crea una copia)
  3. Comando-S para guardar
  4. Anula la selección de la casilla de verificación "Alfa"
  5. Eliminar "copia" del nombre del archivo (incluido el espacio)
    • Esto sobrescribirá su original, si desea conservar el original, simplemente deje "copia" en el nombre
  6. Salvar
  7. Haga clic en 'Reemplazar' para confirmar que desea sobrescribir el original
    • Solo es necesario si está sobrescribiendo su original eliminar canal alfa
Mycah
fuente
2
^ esta es una mejor respuesta, en mi humilde opinión. JPG no admite canales alfa y esto le permitirá usar un formato SIN PÉRDIDAS y lidiar con el canal alfa (en lugar de evitarlo).
Cody-PHP-jQuery
4
No entiendo por qué el equipo de iTunes Store muestra este error (canal alfa) en los íconos de la aplicación de reloj, cuando en versiones anteriores los consideraban correctos. ¡Tiempo perdido! ¡Gracias Apple Inc!
Markus
¡Muchas gracias por la solución sin pérdidas!
Shchvova
10
Con macOS High Sierra, Vista previa parece guardar archivos PNG siempre CON un canal alfa, incluso si la casilla de verificación no está marcada. Si abro el archivo guardado, el cuadro de información siempre dice "Tiene Alfa: 1". La herramienta de sorbos también me lo dice hasAlpha: yes. Además, iTunes Store se queja del canal alfa no deseado ("Falló la operación: el icono de la App Store ... no puede ser transparente ni contener un canal alfa").
Stefan
2
Según lo mencionado por @Psychomentally, ImageMagick finalmente funcionó para mí: convert in.png -alpha off out.png. Re. Vista previa: activar / desactivar "alfa" en el cuadro de diálogo de exportación cambia el tamaño de archivo previsto, pero al guardarlo, se escribe siempre el archivo con información alfa (y el tamaño correspondiente).
Stefan
53

Si necesita eliminar todos los canales alfa del directorio con iconos, utilice este comando:

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

si tiene Mac OS Mojave y "no se encontró el comando de conversión"

brew install imagemagick

Para instalar Homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
Nikita Pushkar
fuente
1
esto da una imagen de salida de 8 bits en lugar de 24 bits
Stepan Yakovenko
Si cambia -alpha remove -alpha off $i;al -alpha remove -alpha off png24:$i; que dará salida a una de 24 bits png
Lawrence Ryerson Davis IV
37

Si está utilizando la aplicación Vista previa, no es necesario exportar y luego volver a exportar entre jpg y png, simplemente elija exportar y debajo del tipo de archivo (PNG) verá una casilla de verificación alfa, desmarque y guarde.

Oscar
fuente
4
Solía ​​usar este método, pero en MacOS High Sierra, desmarcar Alpha en Preview no hace nada a menos que elija JPG como salida. Si trato de abrir un PNG, exportar PNG sin Alfa y abrir el nuevo PNG, tiene un canal Alfa.
Dan Loughney
Trabajó para mí en High Sierra (10.13.4)
fl034
13

Puede probar imagemagick (también cambiar el tamaño fácilmente para diferentes tamaños):

convert in.png -background black -alpha remove -alpha off -resize 1024x1024 out.png
Psicomentalidad
fuente
¿Cómo selecciono el archivo png en 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 no encontrado
Marlhex
13

No es necesario exportar la imagen a jpg primero. Puede desmarcar la casilla de verificación del canal alfa y exportar directamente de un png a un png sin canal alfa en la aplicación de vista previa.

ingrese la descripción de la imagen aquí

Stefan
fuente
9

Recibí el siguiente error al intentar cargar mi aplicación en la tienda de aplicaciones de iTunes:

Error en las operaciones de iTunes Store

ERROR ITMS-90717: "Icono de App Store no válido. El icono de App Store en el catálogo de activos en 'MyApp.app' no puede ser transparente ni contener un canal alfa".

Confirmé que los íconos de mi tienda de aplicaciones incluían el canal alfa al ubicar el activo en Finder y buscar su información (⌘ + i). Debajo de Más información, mostró:

Canal alfa: si

Encontré la solución anterior para usar Vista previa para eliminar el canal alfa exportándolo con la casilla de verificación Alfa sin marcar, pero encontré una forma de exportarlos por lotes ya que tenía 18 activos de los que necesitaba quitar el canal alfa.

La forma en que logré que la exportación por lotes funcione fue seleccionar todos los activos del ícono de mi aplicación en el buscador> clic derecho> abrir (o abrir con vista previa)

Todos los activos aparecerán ahora en la misma ventana. Seleccione todo (⌘ + a), y luego seleccione Archivo> Exportar imágenes seleccionadas…> Expandir opciones> desmarque la casilla Alfa> Elegir (su carpeta de destino)

¡Hecho! Todas sus imágenes ahora se exportan con el canal alfa eliminado.

Toland Hon
fuente
1
Intenté lo mismo pero ya no funciona en High Sierra. Los canales alfa no se eliminan en la vista previa.
Satheeshwaran
6

Para eliminar el canal alfa de png:

en Mac: la versión preliminar 9.0 (macOS Sierra) puede eliminar el canal alfa si exporta o guarda la imagen.

La versión preliminar 10.0 (944.2) (macOS High Sierra) no elimina el canal alfa. Tanto Exportar como Guardar no eliminan el canal alfa de la imagen.

Hynek
fuente
2
Esto destaca 2 problemas recientes de facepalm por parte de Apple ... High Sierra ignora una opción de guardado Y la razón por la que muchas personas están aquí, Xcode de repente no puede cargar aplicaciones debido a la transparencia de los íconos
MobileVet
4

Habiéndome encontrado con el mismo problema en el contexto de las aplicaciones de Flutter, he dedicado un sitio web simple para esta tarea donde puedes eliminar canales alfa de imágenes:

Eliminar canal alfa

Básicamente, ejecuto ImageMagick usando Web Assembly directamente en el navegador, por lo que ninguna de sus imágenes se carga y no necesita ninguna otra herramienta como Gimp.

Ali Nasserzadeh
fuente
2

la casilla de verificación alfa ya no está en la vista previa

vboombatz
fuente
Todavía puedo verlo y usarlo, tienes que exportar el archivo.
Oscar
2
Puedo apoyar esto, se ha ido.
Miércoles
2

Bueno, ya que estás en una Mac, la próxima vez probablemente solo quieras usar Automator. Convierta la imagen a BMP (sin pérdida) y vuelva a PNG. Déjalo salvar y listo ...

Anticro
fuente
0

Puse la muy buena solución de Nikita Pushkar en un script de shell que convierte todos los íconos de iOS que se encuentran en res/icon/ios:

Utiliza brew para instalar imagemagick si no está disponible, así que supongo que solo se ejecutará en 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
Peter T.
fuente
-2

Tuve este mismo problema, pero las otras respuestas no me funcionaron ahora (puede ser un error de Apple). Descubrí que puede usar este sitio web para eliminar el canal alfa de una imagen.

Bhavin Patel
fuente
2
Pero este es el mismo sitio que aquí: stackoverflow.com/a/59591313/5468463
Vega
Respuesta duplicada
Repose el