2011-10-21 5 views
-3

J'ai une question sur les images png que j'utilise dans mon application iPhone. J'ai beaucoup de grandes images pour différentes vues, elles sont compressées mais je me demandais si cela ralentirait l'application du tout. Comme dans le temps de chargement initial et le chargement de différentes vues Fondamentalement, j'ai besoin de savoir comment rendre l'application plus petite et plus rapide en ajustant simplement les images? Ou si ça vaut même la peine de jouer avec ça?Grand PNG Images dans iPhone App Dev

J'ai fait des recherches sur ce sujet mais je n'ai trouvé aucune solution viable en plus de compresser les images.

Toute aide est très appréciée?

+0

Suggestion: Ne jamais utiliser des images plus grandes en termes de résolution, non pas en termes de taille. Si l'image a une plus grande résolution que l'écran de l'iphone, même si elle est compressée par le constructeur de l'interface, cela créera un grand désordre dans l'application. –

+0

@AnilKumarReddy Merci pour la suggestion! – PetersCodeProblems

Répondre

1

Lorsque vous utilisez votre application, remarquez-vous des temps de chargement lents? Si ce n'est pas le cas, ne prenez pas la peine de jouer avec les images, les gains seront minimes, voire pas du tout.

Si vous rencontrez des problèmes avec les heures de chargement de votre application, ne supposez pas que ce sont les fichiers PNG. Utilisez les outils fournis et le profil de votre application pour savoir quelles sont les parties lentes et commencer à partir de là. Ne supposez jamais que vous savez quelle est la cause du code lent.

+0

Ce que je sais. Je me demandais juste quelles seraient les solutions possibles pour les grandes images. – PetersCodeProblems

+0

Merci d'avoir répondu à ma question. – PetersCodeProblems

2

Espérons que cela aide !!!

http://www.iphonedevsdk.com/forum/iphone-sdk-development/7307-resizing-photo-new-uiimage.html

 -(UIImage *)resizeImage:(UIImage *)image { 

CGImageRef imageRef = [image CGImage]; 
CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef); 
CGColorSpaceRef colorSpaceInfo = CGColorSpaceCreateDeviceRGB(); 

if (alphaInfo == kCGImageAlphaNone) 
    alphaInfo = kCGImageAlphaNoneSkipLast; 

int width, height; 

width = 640; 
height = 480; 

CGContextRef bitmap; 

if (image.imageOrientation == UIImageOrientationUp | image.imageOrientation == UIImageOrientationDown) { 
    bitmap = CGBitmapContextCreate(NULL, width, height, CGImageGetBitsPerComponent(imageRef), CGImageGetBytesPerRow(imageRef), colorSpaceInfo, alphaInfo); 

} else { 
    bitmap = CGBitmapContextCreate(NULL, height, width, CGImageGetBitsPerComponent(imageRef), CGImageGetBytesPerRow(imageRef), colorSpaceInfo, alphaInfo); 

} 

if (image.imageOrientation == UIImageOrientationLeft) { 
    NSLog(@"image orientation left"); 
    CGContextRotateCTM (bitmap, radians(90)); 
    CGContextTranslateCTM (bitmap, 0, -height); 

} else if (image.imageOrientation == UIImageOrientationRight) { 
    NSLog(@"image orientation right"); 
    CGContextRotateCTM (bitmap, radians(-90)); 
    CGContextTranslateCTM (bitmap, -width, 0); 

} else if (image.imageOrientation == UIImageOrientationUp) { 
    NSLog(@"image orientation up"); 

} else if (image.imageOrientation == UIImageOrientationDown) { 
    NSLog(@"image orientation down"); 
    CGContextTranslateCTM (bitmap, width,height); 
    CGContextRotateCTM (bitmap, radians(-180.)); 

} 

CGContextDrawImage(bitmap, CGRectMake(0, 0, width, height), imageRef); 
CGImageRef ref = CGBitmapContextCreateImage(bitmap); 
UIImage *result = [UIImage imageWithCGImage:ref]; 

CGContextRelease(bitmap); 
CGImageRelease(ref); 

return result; 

}