gpt4 book ai didi

iphone - 将 UIView 层转换为 UIImage

转载 作者:技术小花猫 更新时间:2023-10-29 10:46:21 26 4
gpt4 key购买 nike

我正在 View 中使用 AVPlayerLayer 播放视频。我需要将 View 转换为图像,我试过了

[myview.layer renderInContext:context];

但这只给出黑色图像。我当时想将该 View 转换为带有视频的图像。这种转换将同时发生 0.05s。

我尝试使用 AVAssetImageGenerator。这给了我使用 Asset 的正确图像。但这只花费了更多时间,这对我的应用程序造成了一些性能问题。任何人都可以帮助我如何减少特定 CMTime 将视频转换为图像的过程。

下面是我的代码。

- (UIImage *)currentItemScreenShot
{
AVPlayer *abovePlayer = [objVC player];
if(imageGenerator == nil)
{
AVAsset *asset = [[[objVC player] currentItem] asset];
imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
}

CMTime time = [[abovePlayer currentItem] currentTime];
if ([imageGenerator respondsToSelector:@selector(setRequestedTimeToleranceBefore:)] && [imageGenerator respondsToSelector:@selector(setRequestedTimeToleranceAfter:)]) {
[imageGenerator setRequestedTimeToleranceBefore:kCMTimeZero];
[imageGenerator setRequestedTimeToleranceAfter:kCMTimeZero];
}

CGImageRef imgRef = [imageGenerator copyCGImageAtTime:time
actualTime:NULL
error:NULL];
if (imgRef == nil) {
if ([imageGenerator respondsToSelector:@selector(setRequestedTimeToleranceBefore:)] && [imageGenerator respondsToSelector:@selector(setRequestedTimeToleranceAfter:)]) {
[imageGenerator setRequestedTimeToleranceBefore:kCMTimePositiveInfinity];
[imageGenerator setRequestedTimeToleranceAfter:kCMTimePositiveInfinity];
}
imgRef = [imageGenerator copyCGImageAtTime:time actualTime:NULL error:NULL];
}
UIImage *image = [UIImage imageWithCGImage:imgRef];
CGImageRelease(imgRef);

image = [self reverseImageByScalingToSize:image.size :image];
return image;
}

最佳答案

MPMoviePlayerController 可以很容易地从电影中的某个点获取图像。

    - (UIImage*)imageFromVideoAtPath:(NSString *)path atTime:(NSTimeInterval)time {
NSURL *videoURL = [NSURL fileURLWithPath:path];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
[moviePlayer prepareToPlay];
UIImage *thumbnail = [moviePlayer thumbnailImageAtTime:time timeOption:MPMovieTimeOptionNearestKeyFrame];
[moviePlayer stop];
return thumbnail;
}

用视频的路径调用这个就行了,在你想获取图片的时候。

关于iphone - 将 UIView 层转换为 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14275859/

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