我使用下面的代码来旋转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中
答案 0 :(得分:2)
如果您要将图像旋转90度,则应在创建图像上下文时交换宽度和高度:
CGSize s = {image.size.height, image.size.width};
这样,就有足够的空间来绘制完全变换的图像。尝试将图像绘制成超出图形上下文边界的矩形只会导致无法绘制。
P.S。我建议使用CGBitmapContext而不是UIGraphicsBeginImageContext()
,因为前者是线程安全的,这意味着如果您愿意,您可以在后台线程上进行图像处理。