菜鸟教程小白 发表于 2022-12-13 08:58:30

ios - 使用 GPUImage 与 Core Image 与 UIImage 解压缩?


                                            <p><p>我们正在构建一个可以处理大量图像的应用程序。我们对 Core Image、GPUImage 和 UIImage 以及它如何解压缩图像都感兴趣。我们已经熟悉这样一个事实,即在后台线程上对图像进行解压缩将有助于消除 UI 滚动时的卡顿或抖动。但是,我们对减压工作在哪里进行并不十分熟悉。我们还使用 UIImage 对图像进行了一些裁剪。那么问题来了:</p>

<p>背景:我们一直支持 iPhone 4 的设备,但很快可能会放弃 iPhone 4,转而使用 iPhone 4S 作为我们最旧的设备。</p>

<p>1) 图像的解压是在 GPU 上完成的吗? ...核心形象? GPU图像? UIImage?</p>

<p>2) 可以在 GPU 上裁剪图像吗? ...核心形象? GPU图像? UIImage?</p>

<p>3) 根据我们的设备配置文件,GPU 支持是否存在差异?</p>

<p>基本上,我们希望将尽可能多的负载卸载到 GPU 上,以释放设备上的 CPU。此外,我们希望在 GPU 上执行比在 CPU 上更快的操作。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>回答您关于解压缩的问题:Core Image、GPUImage 和 UIImage 都使用几乎相同的方式从磁盘加载图像。对于 Core Image,您从 UIImage 开始,对于 GPUImage,您可以在 <a href="https://github.com/BradLarson/GPUImage/blob/master/framework/Source/iOS/GPUImagePicture.m" rel="noreferrer noopener nofollow">the GPUImagePicture source</a> 中查看。它目前依赖于通常通过 UIImage 获得的 CGImageRef。</p>

<p>UIImage 在 CPU 端进行图像解压缩,而我研究过的其他用于提高 GPUImage 图像加载性能的库也是如此。 GPUImage 中图像加载的最大瓶颈是必须将图像加载到 UIImage 中,然后通过 Core Graphics 将其上传到纹理中。我正在寻找更直接的方法来获取像素数据,但我尝试过的所有解压缩例程最终都比原生 UIImage 加载慢。</p>

<p>图像的裁剪可以在 GPU 上完成,Core Image 和 GPUImage 都可以做到这一点。由于图像加载开销,这可能会也可能不会比通过 Core Graphics 进行裁剪更快,因此您需要自己针对您关心的图像尺寸进行基准测试。更复杂的图像处理操作,如颜色调整等<a href="https://stackoverflow.com/questions/6625888/are-the-core-image-filters-in-ios-5-0-fast-enough-for-realtime-video-processing/6628208#6628208" rel="noreferrer noopener nofollow">generally end up being overall wins on the GPU for most image sizes on most devices</a> .如果可以减少此图像加载开销,GPU 端处理将在更多情况下获胜。</p>

<p>就设备类的 GPU 功能而言,不同 iOS 设备之间存在显着的性能差异,但功能往往基本相同。片段着色器处理性能在 iPhone 4、4S、5 和 5S 设备之间可能存在数量级差异,对于某些操作,5S 比 4 快 1000 倍。A6 和 A7 设备具有一些旧设备缺乏的扩展,但这些只在非常特定的情况下发挥作用。 </p>

<p>最大的区别往往是 GPU 硬件支持的最大纹理大小,iPhone 4 及更早的设备仅限于 2048x2048 纹理,而 iPhone 4S 及更高版本支持 4096x4096 纹理。这可能会限制使用 GPUImage 之类的东西在 GPU 上处理的图像的大小。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 GPUImage 与 Core Image 与 UIImage 解压缩?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/25565790/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/25565790/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 GPUImage 与 Core Image 与 UIImage 解压缩?