首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自服务器url的拇指图像

来自服务器url的拇指图像
EN

Stack Overflow用户
提问于 2019-01-19 15:11:35
回答 2查看 70关注 0票数 0

如何从视频URL创建缩略图并加载到表格视图单元格中

我正在使用这段代码,但它冻结了表视图

代码语言:javascript
复制
 func generateThumbImage(url : NSURL) -> UIImage{
    var asset : AVAsset = AVAsset.assetWithURL(url) as! AVAsset
    var assetImgGenerate : AVAssetImageGenerator = AVAssetImageGenerator(asset: asset)
    assetImgGenerate.appliesPreferredTrackTransform = true
    var error       : NSError? = nil
    var time        : CMTime = CMTimeMake(1, 30)
    var img         : CGImageRef = assetImgGenerate.copyCGImageAtTime(time, actualTime: nil, error: &error)
    var frameImg    : UIImage = UIImage(CGImage: img)!

    return frameImg
}
EN

回答 2

Stack Overflow用户

发布于 2019-01-19 15:17:43

你可以试试,代码可能对你有帮助。

代码语言:javascript
复制
import Foundation
import UIKit
import AVKit

class CommonFunctions {

    static let shared = CommonFunctions()

    typealias ResponseBlock = (_ result: UIImage?) -> Void

    func getVideoThumnail(URLString: String, responseBlock:@escaping ResponseBlock) {
        DispatchQueue.global().async {
            let url = URL(string: URLString)
            let asset = AVAsset(url: url!)
            let assetImgGenerate : AVAssetImageGenerator = AVAssetImageGenerator(asset: asset)
            assetImgGenerate.appliesPreferredTrackTransform = true
            let time = CMTimeMake(value: 1, timescale: 2)
            let img = try? assetImgGenerate.copyCGImage(at: time, actualTime: nil)
            if img != nil {
                let frameImg  = UIImage(cgImage: img!)
                DispatchQueue.main.async(execute: {
                    responseBlock(frameImg)
                })
            }else {
                responseBlock(nil)
            }
        }
    }
}

使用:-

代码语言:javascript
复制
 CommonFunctions.shared.getVideoThumnail(URLString: downloadURL) { (image) in
                                if image != nil {
                                      let thumbimage = image
                                }
                            }
票数 1
EN

Stack Overflow用户

发布于 2019-01-19 15:47:26

UIThread中使用您的方法

代码语言:javascript
复制
DispatchQueue.main.async() {
    // your UI update code
}

它能防止结冰。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54264890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档