Eu tenho um aplicativo que exibe um monte de imagens em uma apresentação de slides. Essas imagens farão parte do pacote, assim distribuídas com o app.
Todas as imagens são fotografias ou fotográficas, etc.
Eu li que é preferível usar PNG como formato de imagem, mas visto que a versão JPG será muito menor, prefiro usar isso.
Há alguma orientação sobre qual formato usar e em que caso?
Respostas:
PNGs são pixels perfeitos (sem perdas) e requerem muito pouca energia extra da CPU para serem exibidos. No entanto, PNGs grandes podem demorar mais para ler do armazenamento do que mais formatos de imagem compactados e, portanto, ser mais lentos para serem exibidos.
JPGs são menores para armazenar, mas com perdas (a quantidade depende do nível de compressão), e exibi-los requer um algoritmo de decodificação muito mais complicado. Mas a compressão e a qualidade de imagem típicas geralmente são suficientes para fotos.
Use JPGs para fotos e qualquer coisa grande, e PNGs para qualquer coisa pequena e / ou projetada para ser exibida "pixel perfeito" (por exemplo, ícones pequenos) ou como parte de uma sobreposição transparente composta, etc.
fonte
A Apple otimiza as imagens PNG incluídas no pacote do seu aplicativo para iPhone. Na verdade, o iPhone usa uma codificação especial na qual os bytes de cores são otimizados para o hardware. O XCode lida com essa codificação especial para você quando você constrói seu projeto. Portanto, você vê benefícios adicionais em usar PNGs em um iPhone, além do tamanho. Por esta razão, é definitivamente recomendado o uso de PNGs para quaisquer imagens que apareçam como parte da interface (em uma visão de tabela, rótulos, etc).
Quanto à exibição de uma imagem em tela cheia, como uma fotografia, você ainda pode colher benefícios com PNGs, uma vez que eles não apresentam perdas e a qualidade visual deve ser melhor do que um JPG, sem mencionar o uso de recursos para decodificar a imagem. Você pode precisar diminuir a qualidade de seus JPGs para ver um benefício real no tamanho do arquivo, mas você está exibindo imagens não ideais.
O tamanho do arquivo certamente é um fator, mas há outras considerações em jogo na escolha de um formato de imagem.
fonte
Há uma coisa importante a se pensar sobre PNGs. Se um PNG estiver incluído em sua compilação do Xcode, ele será otimizado para iOS. Isso é chamado de esmagamento PNG. Se seu PNG for baixado em tempo de execução, ele não será esmagado. PNGs esmagados são executados da mesma forma que JPGs 100%. JPGs de qualidade inferior funcionam melhor do que JPGs de qualidade superior. Portanto, do ponto de vista do desempenho, do mais rápido para o mais lento, ele mudaria para JPG de baixa qualidade, JPG de alta qualidade, PNG Crushed, PNG.
Se você precisar baixar PNGs, deve considerar a compressão dos PNGs no servidor antes do download.
http://www.cocoanetics.com/2011/10/avoiding-image-decompression-sickness/
fonte
O blog Cocoanetics publicou um bom benchmark de desempenho do iOS de JPGs em vários níveis de qualidade e PNGs, com e sem esmagamento.
De sua conclusão:
fonte
Pensei em compartilhar alguns dados de desempenho de descompressão ...
Estou fazendo alguns protótipos de um visualizador de 360 graus - um carrossel onde o usuário pode girar por uma série de fotos tiradas de diferentes ângulos, para dar a impressão de ser capaz de girar suavemente um objeto.
Eu carreguei os dados da imagem em uma matriz de NSData para tirar o arquivo i / o da equação, mas criei NSImage instantaneamente. Testando perto da taxa de quadros máxima (~ 25 fps) e assistindo em Instrumentos, vejo que o aplicativo está claramente vinculado à CPU e há um aumento de aproximadamente 10% na carga da CPU mostrando ~ 275 kb png's vs. ~ 75 kb jpg's.
Não posso dizer com certeza, mas meu palpite é que o limite da CPU é apenas da execução geral do programa e da movimentação de todos os dados na memória, mas a descompressão da imagem é feita na GPU. De qualquer maneira, o argumento de desempenho JPG vs. PNG parece favorecer o JPG, especialmente quando os tamanhos de arquivo menores (e, portanto, tamanhos menores de objetos na memória, pelo menos em algumas partes da cadeia) são levados em consideração.
Claro que cada situação é diferente, não há substituto para o teste ...
fonte
Eu encontrei grandes diferenças no desempenho da animação ao usar JPEGs vs PNG. Por exemplo, colocar três JPEGs do tamanho de uma tela lado a lado em um UIScrollView e rolar horizontalmente em um iPhone4 resulta em lag e uma animação espasmódica totalmente desagradável. Com pngs não transparentes das mesmas dimensões, a rolagem é suave. Nunca uso JPEGs, mesmo que a imagem seja grande.
fonte
Eu acho que se você quiser usar transparente, você não tem escolha, exceto PNG. Mas, se o seu fundo já é opaco, então você pode usar JPG. Essa é a única diferença que eu posso ver
fonte
'Use JPEG para fotos' conforme mencionado nas Diretrizes de Interface Humana na seção Produzir arte no formato apropriado.
fonte