gpt4 book ai didi

ios - 在后台线程中处理 JPEG 图像

转载 作者:行者123 更新时间:2023-11-29 03:26:57 25 4
gpt4 key购买 nike

我有两个后台线程同时运行。第一个线程将原始像素数据转换为 UIImage(使用 CGImageCreate),并使用 UIImageJPEGRepresentation 将此图像保存为 JPEG。第二个线程从文件中读取 JPEG 数据并将其加载到 UIImage 中。然后从此 UIImage 中提取原始像素数据(使用 CGBitmapContextCreate)。

问题是线程写入的 JPEG 偶尔(50 个中的 1 个)会损坏数据: Corrupted image

损坏的图像通常具有纯色的顶部/底部字段。

如果我使用互斥锁来防止整个后台方法同时运行,问题就会消失。我还尝试使用 libjpeg 而不是 UIKit 方法,它也工作得很好。

我很确定我的线程永远不会同时访问相同的图像数据。据我所知,一些 UIKit 方法是线程安全的。但在这种情况下看起来有些东西不是线程安全的。

我的问题是,在一个线程上将原始像素数据保存为 JPEG,同时在另一个线程上将 JPEG 解码为原始像素数据的正确方法是什么?我还需要同时在主线程上使用 UIImage 进行一些绘图。

最佳答案

事实证明,问题是我在创建 CGImage 后删除了传递给 CGDataProviderCreateWithData 的像素数据。只有调用回调CGDataProviderReleaseDataCallback后,数据才能被销毁。

关于ios - 在后台线程中处理 JPEG 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20342913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com