我怎样才能调整UIImage的大小?

时间:2011-11-01 18:39:27

标签: iphone objective-c ios xcode uiimageview

以下是我用来调整UIImage大小的代码,但遗憾的是它无效:

UIImage *cellImage = [UIImage imageNamed:@"warning.png"];

CGRect cropRect = CGRectMake(0.0, 0.0, 12.0, 12.0);
CGImageRef croppedImage = CGImageCreateWithImageInRect([cellImage CGImage], cropRect);

UIImageView *myImageView = [[UIImageView alloc] initWithFrame:cropRect];
[myImageView setImage:[UIImage imageWithCGImage:croppedImage]]; 

CGImageRelease(croppedImage);

为什么这段代码不起作用?

由于

3 个答案:

答案 0 :(得分:1)

嗨试试这个: -

       UIGraphicsBeginImageContext(CGSizeMake(50,50));
       [[UIImage imageNamed:@"warning.png"] drawInRect: CGRectMake(0, 0,50,50)];
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext(); 

答案 1 :(得分:0)

我不知道为什么不起作用,但尝试使用UIGraphicsBeginImageContext和UIGraphicsEndImageContext,UIGraphicsBeginImageContext需要一个大小。

答案 2 :(得分:0)

您是否忘记将myImageView添加为主视图或其他可见视图的子视图? E.g。

[cell.contentView addSubview:myImageView];

这可以解释为什么没有出现。

但是,如果你的rect小于图像,CGImageCreateWithImageInRect()会在矩形内裁剪图像。要调整UIImage本身的大小,请参阅:The simplest way to resize an UIImage?

但是,如果您实际上不需要调整UIImage本身的大小,那么最简单的方法就是让UIImageView处理调整大小。

UIImage *cellImage = [UIImage imageNamed:@"warning.png"];
CGRect cropRect = CGRectMake(0.0, 0.0, 12.0, 12.0);
CGImageRef croppedImage = CGImageCreateWithImageInRect([cellImage CGImage], CGRectMake(0.0f,0.0f,cellImage.size.width,cellImage.size.height));
UIImageView *myImageView = [[UIImageView alloc] initWithFrame:cropRect];
[myImageView setImage:[UIImage imageWithCGImage:croppedImage]]; 
CGImageRelease(croppedImage);
[cell.contentView addSubview:myImageView];

请参阅: