2010-01-12 13 views
15

(Nota: He resuelto este problema, pero tomó el tiempo suficiente que les dejo pregunta/respuesta aquí.)¿Cómo puedo omitir la compresión de un archivo PNG?

El Xcode proceso de construcción "optimiza" mis archivos PNG en la construcción. Esto no suele ser un problema, pero iTunesArtwork se procesa de esta manera y lo corrompe para que iTunes no pueda mostrarlo. ¿Cómo puedo prevenir esto?

Respuesta

14

Puede leer más acerca de la compresión PNG de Xcode aquí: http://iphonedevelopment.blogspot.com/2008/10/iphone-optimized-pngs.html

Si bien puede desactivar PNG optimización/compresión utilizando en su totalidad "Comprimir archivos PNG" en la configuración del proyecto (que es visible sólo si SDK Base del proyecto es establecer en un SDK de dispositivo, no en un SDK de simulador), ¡no desea hacer esto! Lea el enlace de arriba para obtener detalles sobre por qué, pero la esencia es que la optimización le permite al iPhone omitir algunas operaciones matemáticas que ralentizan la visualización de PNG.

Xcode solo optimizará los archivos de imagen PNG que conozca. Para evitar que un PNG específico se optimice, cambie su tipo de archivo para que Xcode ya no sepa que es un archivo PNG.

  1. Seleccione el archivo en la ventana del proyecto.
  2. Elija Archivo-> Obtener información.
  3. En la ficha General, cambie el Tipo de archivo de image.png a file.

(Esto es en realidad el valor por defecto cuando se agrega un archivo sin una extensión, que es presumiblemente la razón por iTunesArtwork no tiene uno. Pero si eres como yo pedante que comprueba la configuración de tipo de archivo y lo arreglaron.)

+0

recomiendo [desactivar la compresión de Xcode completo] (http://imageoptim.com/xcode.html), ya que no hace buen trabajo y la optimización [podrá hacer que los archivos * * lento para cargar] (http://imageoptim.com/tweetbot.html). – Kornel

+0

Eso es si está utilizando una biblioteca de terceros que no es compatible con PNG comprimidos personalizados de Apple, ¿no? iOS en sí es ** mucho ** más rápido con imágenes comprimidas. ¿O eso solo es cierto para hardware antiguo? Ciertamente fue cierto la última vez que lo probé. –

+0

Steven Fisher: la mayoría de los ahorros provienen de imágenes de 1 byte por píxel, en las que no hay nada para el intercambio de bytes en primer lugar. He probado en hardware nuevo, pero no veo por qué los byteswapping serían caros, es una operación muy simple que puedes hacer en los registros/caché L1. OTOH leyendo más datos del disco y descomprimiendo más sonidos como una sobrecarga real. – Kornel

0
1.Goto your build setting 
2.Search flag Compress PNG files and set it to NO.(default is YES). 

Después de esta compresión de imágenes PNG se evitarán. Sólo para obtener más información

+0

Eso apagará toda la compresión PNG, que generalmente no es lo que quieres. (Pero podría ser a veces) –

8

Encontré otro método muy simple para deshabilitar la compresión de un solo archivo png. Creo que este es un mejor enfoque que la respuesta aceptada porque no tiene que cambiar el tipo (o la extensión) del archivo en el sistema de archivos local, sino solo en XCode.

Cambia el tipo de archivo de Default - PNG Image a Data en Identity and Type inspector en XCode. Vea a continuación:

fue:

enter image description here

Ahora:

enter image description here

1

Para todos ustedes utilizando Xcode 6.4 y superiores:

Ir a: "Targets" - "Su nombre de proyecto".

A continuación, vaya a la pestaña "Configuración de compilación". Justo debajo del nombre de la pestaña, haga clic en el botón "Básico" y "Combinado".

Siguiente desplácese hacia abajo al separador "Empaquetado" y encontrará "Comprimir archivos PNG" en "Sí" de forma predeterminada.

enter image description here

Cuestiones relacionadas