2010-11-16 2 views
2

J'ai essayé d'utiliser une méthode couramment utilisée pour redimensionner une image. Sans utiliser cette méthode, voici le code qui prend une URL d'une image.Redimensionnement simple de l'image

NSData *data = [NSData dataWithContentsOfURL:url]; 
UIImage *img = [[UIImage alloc] initWithData:data]; 

cell.imageView.image = img; 

Cela fonctionne très bien. Mais lorsque je tente d'utiliser cette méthode:

-(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize; 
{ 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

et l'appeler en utilisant ceci:

UIImage *scaledImage = [self imageWithImage:img scaledToSize:CGSizeMake(10.0f,10.0f)]; 

mettre ensuite dans ma table comme ceci:

cell.imageView.image = scaledImage; 

Rien ne montre. Y a-t-il quelque chose qui me manque ici?

Répondre

1

Ceci est similaire à Exporting customized UITableViewCells into UIImage

Voici ce que vous devez faire dans votre -imageWithImage: scaledToSize: méthode, modifiée de ma réponse à cette question:

-(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize 
{ 
    // Create a bitmap context. 
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
    CGContextRef bitmapContextForScaledImage = CGBitmapContextCreate(nil, newSize.width, newSize.height, 8, 0, colorSpace, kCGImageAlphaNone); 
    CGColorSpaceRelease(colorSpace); 

    // Draw the image's layer into the context. 
    UIImageView * imageView = [[UIImageView alloc] initWithImage:image]; 
    [imageView.layer renderInContext:bitmapContextForCell]; 
    [imageView release]; 

    // Create a CGImage from the context. 
    CGImageRef cgScaledImage = CGBitmapContextCreateImage(bitmapContextForScaledImage); 

    // Create a UIImage from the CGImage. 
    UIImage * scaledImage = [UIImage imageWithCGImage:cgScaledImage]; 

    // Clean up. 
    CGImageRelease(cgScaledImage); 
    CGContextRelease(bitmapContextForScaledImage); 

    return scaledImage; 
} 
+0

devrait-il pas 'UIImage * scaledImage = [UIImage imageWithCGImage: cgScaledImage]; '? – vikingosegundo

+0

Vous avez raison, merci. – Ryan

+0

Merci ... Je reçois une erreur sur cette ligne [image.layer renderInContext: bitmapContextForCell]; dire demande de membre "couche" dans quelque chose pas une structure ou union – Allen