旋转UIImage并且不显示任何内容

时间:2010-12-13 07:06:24

标签: iphone

我使用下面的代码来旋转UIImage

double angle = -90;
NSData *imageData = [NSData dataWithContentsOfFile:sss];
UIImage *image =[UIImage imageWithData:imageData];
CGSize s = {image.size.width, image.size.height};
UIGraphicsBeginImageContext(s);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(ctx, 0,image.size.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
CGContextRotateCTM(ctx, 2*M_PI*angle/360);
CGContextDrawImage(ctx,CGRectMake(0,0,image.size.width, image.size.height),image.CGImage);
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[myUIImageView  setImage:newImage];

但myUIImageView上没有显示任何内容。

如果有什么不对?

欢迎任何评论

由于

InterDev中

1 个答案:

答案 0 :(得分:2)

如果您要将图像旋转90度,则应在创建图像上下文时交换宽度和高度:

CGSize s = {image.size.height, image.size.width};

这样,就有足够的空间来绘制完全变换的图像。尝试将图像绘制成超出图形上下文边界的矩形只会导致无法绘制。

P.S。我建议使用CGBitmapContext而不是UIGraphicsBeginImageContext(),因为前者是线程安全的,这意味着如果您愿意,您可以在后台线程上进行图像处理。