gpt4 book ai didi

ios - 设置使用 AVAssetImageGenerator ios 生成的缩略图的图像大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:30 28 4
gpt4 key购买 nike

我正在使用 AVAssetImageGenerator 类来生成缩略图,但问题是我需要将该缩略图放入具有 UIImageView 大小的 UITableViewCell 中( 320,239)。我将 AVAssetImageGenerator 最大大小属性指定为 (320,239),但我没有得到我指定的所需大小请提前感谢任何帮助。请查看以下代码以供快速引用。

    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:self.consenteeVideoUrl options:nil];

AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:asset];

gen.maximumSize = CGSizeMake(320, 239);

gen.apertureMode = AVAssetImageGeneratorApertureModeProductionAperture;

gen.appliesPreferredTrackTransform = YES;

CMTime time = CMTimeMakeWithSeconds(0.0, 600);

NSError *error = nil;

CMTime actualTime;

CGImageRef image = [gen copyCGImageAtTime:time actualTime:&actualTime error:&error];

UIImage *thumbnailImage = [[UIImage alloc] initWithCGImage:image];
//thumbnailImage = [CSUtilities imageWithImage:thumbnailImage scaledToSize:CGSizeMake(320, 239)];
CGImageRelease(image);

我从“stackoverflow”获得的另一个解决方案,但对我的场景没有太大帮助。`

AVURLAsset *asset=[[AVURLAsset alloc] initWithURL:self.consenteeVideoUrl options:nil];
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
generator.appliesPreferredTrackTransform=TRUE;

CMTime thumbTime = CMTimeMakeWithSeconds(30,30);

AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){
if (result != AVAssetImageGeneratorSucceeded) {
NSLog(@"couldn't generate thumbnail, error:%@", error);
}

UIImage *thumbnailImage = [[UIImage alloc] initWithCGImage:im];
//save image to application directory...
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *folderPath = [documentsDirectory stringByAppendingPathComponent:self.uniqueCodeString];
if (![[NSFileManager defaultManager] fileExistsAtPath:folderPath])
[[NSFileManager defaultManager] createDirectoryAtPath:folderPath withIntermediateDirectories:NO attributes:nil error:&error];

NSString *savedImagePath = [folderPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",self.uniqueCodeString]];
NSData *imageData = UIImagePNGRepresentation(thumbnailImage);
BOOL success = [imageData writeToFile:savedImagePath atomically:YES];
if (success) {
CSLog(@"sucess");
}
partnerEvent.thumbnailImageStr = [self getImagePath];
[self.ibPartnerEventTableView reloadData];
};

CGSize maxSize = CGSizeMake(320, 239);
generator.maximumSize = maxSize;
[generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:thumbTime]] completionHandler:handler];

最佳答案

您的代码没有任何错误,但正如文档中所述

AVAssetImageGenerator scales images such that they fit within the defined bounding box. Images are never scaled up. The aspect ratio of the scaled image is defined by the apertureMode property.

由于 apertureMode 设置为 AVAssetImageGeneratorApertureModeProductionAperture 生成的图像保持纵横比。如果视频和尺寸集具有相同的宽高比,它只会适合最大尺寸,而指定尺寸不太可能发生这种情况。
尝试将 UIImageView contentMode 更改为 UIViewContentModeScaleAspectFill 一些内容可能会被裁剪,但您将填满整个 imageView

关于ios - 设置使用 AVAssetImageGenerator ios 生成的缩略图的图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23800500/

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