在UIGraphicsBeginImageContext中绘制时,UIImage方向正在改变

时间:2014-06-18 10:18:57

标签: ios objective-c uiimage

我想在UIImage上绘制一些线条。我可以在上下文中绘制线条,最后我将背景图像绘制到它,然后使用以下代码从上下文中获取图像:

UIGraphicsBeginImageContext(self.bounds.size);
CGRect newFrame = self.frame;
newFrame.origin.y = 0;
[self.backgroundImage drawInRect:newFrame];

[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *saveImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

问题是:self.backgroundImage.imageOrientation是3但saveImage.imageOrientation是0.如何为saveImage获取相同的imageOrientation?

1 个答案:

答案 0 :(得分:1)

UIImage-> drawInRect将遵循图像方向,因此在该调用之后,结果始终是“直立”,因此您的saveImage实际上应该具有imageOrientationUp。

如果要在不影响图像的情况下更改方向元数据,可以使用以下内容:

// Recreate UIImage with new orientation

- (UIImage *) imageWithOrientation:(UIImageOrientation)value
{
    if (self.imageOrientation == value)
        return self;

    if (self.CGImage != nil)
        return [UIImage imageWithCGImage:self.CGImage
        scale:self.scale orientation:value];

    if (self.CIImage != nil)
        return [UIImage imageWithCIImage:self.CIImage
        scale:self.scale orientation:value];

    return nil;
}