Какой метод изменения размера UIImage лучше и почему?

Для всех вас, экспертов по графике, мне было интересно, какой из этих двух методов лучше подходит для изменения размера UIImage:

Первый, с которым я столкнулся, это простой и популярный и заключается в следующем:

-(UIImage *)resizeImage:(UIImage *)image width:(CGFloat)resizedWidth height:(CGFloat)resizedHeight
{
    UIGraphicsBeginImageContext(CGSizeMake(resizedWidth ,resizedHeight));
    [image drawInRect:CGRectMake(0, 0, resizedWidth, resizedHeight)];
    UIImage *result = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();
    return result;
}

Второй метод, который я нашел по этой ссылке http://iphonesdksnippets.com/post/2009/05/06/Resize-image-and-keep-aspect-ratio. aspx и, похоже, выполняет то же самое, что и выше, но намного сложнее (я действительно не понимаю, что в нем происходит):

-(UIImage *)resizeImage:(UIImage *)image width:(CGFloat)resizedWidth height:(CGFloat)resizedHeight
 {
    CGImageRef imageRef = [image CGImage];

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef bitmap = CGBitmapContextCreate(NULL, resizedWidth, resizedHeight, 8, 4 * resizedWidth, colorSpace, kCGImageAlphaPremultipliedFirst);
    CGContextDrawImage(bitmap, CGRectMake(0, 0, resizedWidth, resizedHeight), imageRef);
    CGImageRef ref = CGBitmapContextCreateImage(bitmap);
    UIImage *result = [UIImage imageWithCGImage:ref];

    CGContextRelease(bitmap);
    CGImageRelease(ref);

    return result;  
}

Итак, мой вопрос: какой способ лучше и почему?

10
задан Ser Pounce 16 November 2011 в 18:53
поделиться