我想在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?
答案 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;
}