使用 UIGraphicsGetImageFromCurrentImageContext 获取图像

Posted

技术标签:

【中文标题】使用 UIGraphicsGetImageFromCurrentImageContext 获取图像【英文标题】:Getting image using UIGraphicsGetImageFromCurrentImageContext 【发布时间】:2012-07-25 11:19:25 【问题描述】:

我试图理解 UIgraphicsGetImageContext() 函数,根据我的理解,它是一个函数,它从当前位图上下文中获取图像,所以每当我在画布上绘制一些东西并调用这个函数时,我都会得到绘制的图像,但假设我不画任何东西,那么它也会提取一个空图像。所以我想了解,我们如何检查 canvas(CGContext) 何时为 nil。

下面是我尝试过的代码,但它不起作用

 UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO,0.0);
    [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    if(UIGraphicsGetCurrentContext() == nil)
    
        NSLog(@"NIL");
    
    else
       
        m_curImage = UIGraphicsGetImageFromCurrentImageContext();  
        UIGraphicsEndImageContext();
        NSLog(@"%@",m_curImage);       
    

所以朋友们,请告诉我如何获得它,这将对我有帮助

问候 兰吉特

【问题讨论】:

对不起,我知道它太老了,但你找到答案了吗? 【参考方案1】:

UIGraphicsGetCurrentContext() 只会在图形上下文堆栈为空时返回 nil。在您的绘图代码中,您将始终有一个绘图上下文,因此它不会在这里返回 nil。 UIGraphicsBeginImageContextWithOptions 将新的上下文压入堆栈。

您不能使用UIGraphicsGetCurrentContext() 来检测您是否在上下文中绘制了某些东西。

【讨论】:

您无法真正检查是否绘制了某些东西(它可能被绘制为透明或超出图像边界,或者绘图太小以至于在图像中不可见),您只能检查如果生成的图像包含至少一个不完全透明的像素。 哦是吗?那么@phix23,我们如何检查呢?我对此一无所知 你不应该这样做,重新考虑你的问题并重新设计你的代码 嗨@phix23 我不明白,如果我不画任何东西,我也会得到一个空的图像。 是的,当然,UIGraphicsBeginImageContextWithOptions 总是创建一个即使是空的也会占用空间的图像

以上是关于使用 UIGraphicsGetImageFromCurrentImageContext 获取图像的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)