菜鸟教程小白 发表于 2022-12-12 14:07:31

iphone - 窗口截图时间过长


                                            <p><p>我正在使用以下代码在用户的点击操作上截取应用窗口的屏幕截图:</p>

<pre><code>UIGraphicsBeginImageContextWithOptions(self.view.window.bounds.size, self.view.opaque, 0.0);
;

CGImageRef imageRef = CGImageCreateWithImageInRect(, CGRectMake(0, 0, 640, self.view.window.layer.frame.size.height *2));
</code></pre>

<p>-对<code>imageContext</code>进行一些操作-</p>

<pre><code>myImage = UIGraphicsGetImageFromCurrentImageContext();
</code></pre>

<p>现在,屏幕截图很好,但渲染它所花费的时间令人难以忍受。我需要在用户点击后立即呈现动画,但在屏幕截图图像存储在 <code>myImage</code> 中之前我无法开始动画。</p>

<p>有没有一种快速的方法来做到这一点,就像 Facebook 在墙上做的那样(当打开图像浏览器时),或者他们是否使用了其他一些技术?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>通过在后台线程和主线程之间分配任务,我设法稍微加快了进程。</p>

<p>我在后台线程<code>dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//代码
});</code> :</p>

<ul>
<li>开始<code>CGImageContext</code> </li>
<li>创建<code>CGImageRef</code></li>
<li>使用 <code>renderInContext</code></li> 创建屏幕截图
<li>对我需要的 imageRef 进行操作。</li>
<li>将最终的 <c​​ode>UIImage</code> 传递给 <code>selector</code>,它进一步将图像设置为我想要的变量(在我的例子中为 <code>UIImageView</code>)。</li>
<li>结束并释放图形上下文。</li>
</ul>

<p>在 block 末尾调用的 <code>selector</code> 中,我使用 <code>dispatch_async(dispatch_get_main_queue(), ^{ 将图像设置为 <code>UIImageView</code>
//代码<br/>
    });</code></p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 窗口截图时间过长,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/18593885/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/18593885/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 窗口截图时间过长