gpt4 book ai didi

ios - 如何使用 "generateCGImagesAsynchronously"从视频中加载图像序列?

转载 作者:行者123 更新时间:2023-11-28 15:54:37 29 4
gpt4 key购买 nike

我想将图像生成到 ScrollView (就像视频在默认 ios 播放器中开始播放时一样)。

let imageView = UIImageView()
let asset :AVAsset = AVURLAsset.init(url: url as URL)
let assetImgGenerate : AVAssetImageGenerator = AVAssetImageGenerator(asset: asset)
assetImgGenerate.appliesPreferredTrackTransform = true
assetImgGenerate.requestedTimeToleranceAfter = kCMTimeZero;
assetImgGenerate.requestedTimeToleranceBefore = kCMTimeZero;

var img = UIImage()

assetImgGenerate.appliesPreferredTrackTransform = true
let thumbTime: CMTime = asset.duration
let times = thumbTime as NSValue

assetImgGenerate.generateCGImagesAsynchronously(forTimes: [times], completionHandler: {( requestedTime, image, actualTime,result, error) -> Void in
img = UIImage(cgImage: image!)
imageView.image = img
})

scrollView.backgroundColor = UIColor.black
scrollView.contentSize = CGSize(width: CGFloat(imageView.frame.width), height: 0)
scrollView.addSubview(imageView)}

这不会给出任何输出。如何将图像生成为要在 ScrollView 中显示的序列?

我在这里做错了什么?

最佳答案

您的代码中存在一些错误:

  1. 您在特定时间向 AVAssetGenerator 询问一些图像,但在 block 中您总是将最后一张图像分配给 ImageView 。
  2. 您的 ScrollView (假设您设置正确)具有 ImageView 的宽度,在分配时可能为 0,高度也设置为 0。
  3. 您可能忽略了一点,即 AVAssetGenerator 异步生成图像,因此在 block 内返回第一张图像之前设置 ScrollView 的设置
  4. 在纸上尝试一切,如果您总是设置相同的 ImageView ,您应该如何创建一种连续的图像 ScrollView ?您可能应该遍历所有返回的图像,为每个图像创建一个 ImageView ,将它们并排放置并相应地设置内容大小。

    最后一个陷阱图像在内存使用方面非常昂贵。

关于ios - 如何使用 "generateCGImagesAsynchronously"从视频中加载图像序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41937521/

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