首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从核心数据加载的iPhone UIImage逆时针旋转90度.怎么修?

从核心数据加载的iPhone UIImage逆时针旋转90度,可以通过以下方法实现:

  1. 使用Core Graphics框架中的CGContextRef对象进行旋转操作。
代码语言:objc
复制
- (UIImage *)rotateImage:(UIImage *)image {
    CGImageRef imageRef = image.CGImage;
    CGFloat width = CGImageGetWidth(imageRef);
    CGFloat height = CGImageGetHeight(imageRef);
    
    CGContextRef bitmap = CGBitmapContextCreate(nil, width, height,
                                                CGImageGetBitsPerComponent(imageRef),
                                                CGImageGetBytesPerRow(imageRef),
                                                CGImageGetColorSpace(imageRef),
                                                CGImageGetBitmapInfo(imageRef));
    
    CGContextRotateCTM(bitmap, M_PI_2);
    CGContextDrawImage(bitmap, CGRectMake(0, 0, height, width), imageRef);
    
    CGImageRef rotatedImageRef = CGBitmapContextCreateImage(bitmap);
    UIImage *rotatedImage = [UIImage imageWithCGImage:rotatedImageRef];
    
    CGContextRelease(bitmap);
    CGImageRelease(rotatedImageRef);
    
    return rotatedImage;
}
  1. 使用UIGraphicsBeginImageContextWithOptions函数创建一个新的图像上下文,并使用CGContextRotateCTM函数进行旋转操作。
代码语言:objc
复制
- (UIImage *)rotateImage:(UIImage *)image {
    UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextRotateCTM(context, M_PI_2);
    [image drawAtPoint:CGPointMake(0, -image.size.width)];
    UIImage *rotatedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return rotatedImage;
}

这两种方法都可以实现从核心数据加载的iPhone UIImage逆时针旋转90度的效果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

AFNetworking框架分析(五)——响应的序列化AFURLResponseSerialization分析

这一篇将分析网络请求收到数据时的响应AFURLResponseSerialization序列化过程。 当AFURLRequestSerialization类将所有的请求数据处理完成发送请求之后,当收到返回的数据信息时,这时就要靠AFURLResponseSerialization类来完成不同类型返回数据的序列化操作。 从AFURLResponseSerialization头文件中,可以看出与AFURLRequestSerialization类的结构非常相似。从上往下,首先声明了AFURLResponseSerialization协议,协议中只有一个方法,将response解码成指定的相关数据,这是所有响应类都需要遵循的协议。之后声明了一个AFHTTPResponseSerializer类,作为响应类的根类。再往下的类,都是继承自AFHTTPResponseSerializer的子类,分别是AFJSONResponseSerializer(JSON格式数据响应,默认)、AFXMLParserResponseSerializer(iOS端XML数据解析响应)、AFXMLDocumentResponseSerializer(MAC OS端XML数据解析响应)、AFPropertyListResponseSerializer(PList格式数据解析响应)、AFImageResponseSerializer(图片数据解析响应)和AFCompoundResponseSerializer(复合式数据解析响应) 在父类AFHTTPResponseSerializer中,遵循的协议方法不做任何事情 只做一次response的验证。实现方法中,只有[self validateResponse:(NSHTTPURLResponse *)response data:data error:error]验证response是否合规的方法。而且初始化init方法中,父类只是设置编码格式为UTF-8,设置http状态码为200-299,表示只有这些状态码获得了有效的响应,而不在接受范围内的状态码和内容类型会在数据解析时发生错误。而且其中一句代码self.acceptableContentTypes = nil;,本身acceptableContentTypes用于设置可接受的contentType,这里置为nil,也从侧面建议不要直接使用父类。

03
领券