Большие PNG изображения в iPhone App Dev - PullRequest
0 голосов
/ 21 октября 2011

У меня вопрос по поводу изображений png, которые я использую в своем приложении для iPhone. У меня есть много больших изображений для разных видов, они сжаты, но мне было интересно, если это вообще замедлит работу приложения. Как и во время начальной загрузки и загрузки разных представлений. В основном мне нужно знать, как сделать приложение меньше по размеру и быстрее, просто настраивая изображения? Или даже стоит ли с этим связываться?

Я провел исследование по этой теме, но я не нашел никаких жизнеспособных решений, кроме сжатия изображений.

Любая помощь высоко ценится?

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Надеюсь, это поможет !!!

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;  

}

1 голос
/ 21 октября 2011

Когда вы используете приложение, замечаете ли вы медленное время загрузки?Если нет, то не беспокойтесь о том, что вы можете поиграться с изображениями, прирост будет минимальным.Используйте предоставленные инструменты и профилируйте свое приложение, чтобы узнать, какие медленные части, и начните с этого.Никогда не думайте, что знаете, в чем причина медленного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...