【问题标题】:UIImage orientation is changing when drawing in UIGraphicsBeginImageContext在 UIGraphicsBeginImageContext 中绘制时 UIImage 方向正在改变
【发布时间】:2014-06-18 10:18:57
【问题描述】:

我想在 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?

【问题讨论】:

  • 您好,我也有同样的问题。那么你能帮忙看看如何获​​得相同的方向吗?

标签: ios objective-c uiimage


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    相关资源
    最近更新 更多