-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQHQUtility.m
100 lines (87 loc) · 3.37 KB
/
QHQUtility.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
//
// QHQUtility.m
//
// Created by lujianwen on 2018/10/30.
// Copyright © 2018 All rights reserved.
//
#import "QHQUtility.h"
#import "NSDateFormatter+JDBase.h"
#import "NSDate+JDBase.h"
#import <CommonCrypto/CommonDigest.h>
#import <AVFoundation/AVAsset.h>
#import <AVFoundation/AVTime.h>
#import <AVFoundation/AVAssetImageGenerator.h>
@implementation QHQUtility
+ (NSOperationQueue *)shareOperationQueue {
static NSOperationQueue *_queue;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_queue = [[NSOperationQueue alloc] init];
_queue.maxConcurrentOperationCount = 10;
});
return _queue;
}
+ (void)addOperation:(NSOperation *)operation {
[[QHQUtility shareOperationQueue] addOperation:operation];
}
+ (void)addOperation:(NSOperation *)operation priority:(NSOperationQueuePriority)priority {
operation.queuePriority = priority;
[[QHQUtility shareOperationQueue] addOperation:operation];
}
+ (NSString *)md5WithLowerString:(NSString *)str {
return [[QHQUtility md5WithString:str] lowercaseString];
}
+ (NSString *)md5WithUpperString:(NSString *)str {
return [[QHQUtility md5WithString:str] uppercaseString];
}
+ (NSString *)md5WithString:(NSString *)str {
const char *cStr = [str UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5(cStr, (CC_LONG)strlen(cStr), result);
return [NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];
}
+ (NSString *)md5WithPath:(NSString *)path {
NSFileManager *fileManager = [NSFileManager defaultManager];
if([fileManager fileExistsAtPath:path isDirectory:nil]){
NSData *data = [NSData dataWithContentsOfFile:path];
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5(data.bytes,(CC_LONG)data.length,digest);
NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for(int i = 0;i < CC_MD5_DIGEST_LENGTH;i++ ){
[output appendFormat:@"%02x", digest[i]];
}
return output;
}
return nil;
}
+ (NSString *)setTimeForYear:(NSString *)time {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.timeZone = [[NSTimeZone alloc] initWithName:@"UTC"];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSDate *timeDate = [formatter dateFromString:time];
if ([timeDate isThisYear]) {
[formatter setDateFormat:@"MM/dd"];
} else {
[formatter setDateFormat:@"yyyy/MM/dd"];
}
NSString *newTime = [formatter stringFromDate:timeDate];
return newTime;
}
+ (UIImage*)getVideoPreViewImage:(NSURL *)path {
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:path options:nil];
AVAssetImageGenerator *assetGen = [[AVAssetImageGenerator alloc] initWithAsset:asset];
assetGen.appliesPreferredTrackTransform = YES;
CMTime time = CMTimeMakeWithSeconds(0.0, 600);
NSError *error = nil;
CMTime actualTime;
CGImageRef image = [assetGen copyCGImageAtTime:time actualTime:&actualTime error:&error];
UIImage *videoImage = [[UIImage alloc] initWithCGImage:image];
CGImageRelease(image);
return videoImage;
}
@end