UIImage一些扩展(获取视频第一帧、色值转图片、base64字符串转图片、加载gif图)
下面的都是类方法
pragma mark ---- 获取图片第一帧
- (UIImage*) JJthumbnailImageForVideo:(NSURL *)videoURL atTime:(NSTimeInterval)time {
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];
NSParameterAssert(asset);
AVAssetImageGenerator *assetImageGenerator =[[AVAssetImageGenerator alloc] initWithAsset:asset];
assetImageGenerator.appliesPreferredTrackTransform = YES;
assetImageGenerator.apertureMode = AVAssetImageGeneratorApertureModeEncodedPixels;
CGImageRef thumbnailImageRef = NULL;
CFTimeInterval thumbnailImageTime = time;
NSError thumbnailImageGenerationError = nil;
thumbnailImageRef = [assetImageGenerator copyCGImageAtTime:CMTimeMake(thumbnailImageTime, 60)actualTime:NULL error:&thumbnailImageGenerationError];
if(!thumbnailImageRef)
NSLog(@"thumbnailImageGenerationError %@",thumbnailImageGenerationError);
UIImagethumbnailImage = thumbnailImageRef ? [[UIImage alloc]initWithCGImage: thumbnailImageRef] : nil;
return thumbnailImage;
}
- (UIImage *)imageWithColor:(UIColor *)color withCenter:(UIImage *)centerImage size:(CGSize)size
{
UIView *background = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, size.width, size.height)];
[background setBackgroundColor:color];
UIImageView *imageView = [[UIImageView alloc] initWithImage:centerImage];
[background addSubview:imageView];
imageView.center = background.center;
【UIImage一些扩展(获取视频第一帧、色值转图片、base64字符串转图片、加载gif图)】// Render image
UIGraphicsBeginImageContextWithOptions(background.bounds.size, background.opaque, 0.0);
[background.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
pragma mark ---- base64字符串转图片
- (UIImage *)Base64StrToUIImage:(NSString *)encodedImageStr{
if (encodedImageStr.length==0) {
return nil;
}
NSData *decodedImageData = https://www.it610.com/article/[[NSData alloc] initWithBase64EncodedString:encodedImageStr options:NSDataBase64DecodingIgnoreUnknownCharacters];
UIImage *decodedImage = [UIImage imageWithData:decodedImageData];
return decodedImage;
}
- (UIImage *)loadGif_animatedGIFWithData:(NSData *)data {
if (!data) {
return nil;
}
CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);
size_t count = CGImageSourceGetCount(source);
UIImage *animatedImage;
if (count <= 1) {
animatedImage = [[UIImage alloc] initWithData:data];
}
else {
NSMutableArray *images = [NSMutableArray array];
NSTimeInterval duration = 0.0f; for (size_t i = 0; i < count; i++) { CGImageRef image = CGImageSourceCreateImageAtIndex(source, i, NULL); duration += [self sd_frameDurationAtIndex:i source:source]; [images addObject:[UIImage imageWithCGImage:image scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp]]; CGImageRelease(image); }if (!duration) { duration = (1.0f / 10.0f) * count; }animatedImage = [UIImage animatedImageWithImages:images duration:duration];
}
CFRelease(source);
return animatedImage;
}
推荐阅读
- 今天写一些什么
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 一些杂感(11)
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 一些小日子
- 一些喜欢的句子
- 关于this的一些问题(1)
- 多给孩子一些耐心的陪伴吧
- 机器学习一些简单笔记
- 【无戒学堂】一些大问题?|【无戒学堂】一些大问题? 01