Простое изменение размера изображения - PullRequest
2 голосов
/ 17 ноября 2010

Я пытался использовать метод, обычно используемый для изменения размера изображения. Без использования этого метода вот код, который берет URL изображения.

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

cell.imageView.image = img;

Это отлично работает. Но когда я пытаюсь использовать этот метод:

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

и позвоните, используя это:

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

затем положите в мой стол вот так:

cell.imageView.image = scaledImage;

Ничего не появляется. Я что-то упускаю здесь?

1 Ответ

1 голос
/ 17 ноября 2010

Это похоже на Экспорт настроенных UITableViewCells в UIImage

Вот что вам нужно сделать в вашем -imageWithImage: scaledToSize: метод, модифицированный из моего ответа на этот вопрос:

-(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;
}
...