@@ -38,4 +38,114 @@ - (NSString *)title {
38
38
}
39
39
}
40
40
41
+ - (BOOL )isAdjust {
42
+ NSArray <PHAssetResource *> *resources =
43
+ [PHAssetResource assetResourcesForAsset: self ];
44
+ if (resources.count == 1 ) {
45
+ return NO ;
46
+ }
47
+
48
+ if (self.mediaType == PHAssetMediaTypeImage) {
49
+ return [self imageIsAdjust: resources];
50
+ } else if (self.mediaType == PHAssetMediaTypeVideo) {
51
+ return [self videoIsAdjust: resources];
52
+ }
53
+
54
+ return NO ;
55
+ }
56
+
57
+ - (BOOL )imageIsAdjust : (NSArray <PHAssetResource *> *)resources {
58
+ int count = 0 ;
59
+ for (PHAssetResource *res in resources) {
60
+ if (res.type == PHAssetResourceTypePhoto ||
61
+ res.type == PHAssetResourceTypeFullSizePhoto) {
62
+ count++;
63
+ }
64
+ }
65
+
66
+ return count > 1 ;
67
+ }
68
+
69
+ - (BOOL )videoIsAdjust : (NSArray <PHAssetResource *> *)resources {
70
+ int count = 0 ;
71
+ for (PHAssetResource *res in resources) {
72
+ if (res.type == PHAssetResourceTypeVideo ||
73
+ res.type == PHAssetResourceTypeFullSizeVideo) {
74
+ count++;
75
+ }
76
+ }
77
+
78
+ return count > 1 ;
79
+ }
80
+
81
+ - (PHAssetResource *)getAdjustResource {
82
+ NSArray <PHAssetResource *> *resources =
83
+ [PHAssetResource assetResourcesForAsset: self ];
84
+ if (resources.count == 0 ) {
85
+ return nil ;
86
+ }
87
+
88
+ if (resources.count == 1 ) {
89
+ return resources[0 ];
90
+ }
91
+
92
+ if (![self isAdjust ]) {
93
+ for (PHAssetResource *res in resources) {
94
+ if (self.mediaType == PHAssetMediaTypeImage ||
95
+ res.type == PHAssetResourceTypeFullSizePhoto ||
96
+ res.type == PHAssetResourceTypePhoto) {
97
+ return res;
98
+ }
99
+
100
+ if (self.mediaType == PHAssetMediaTypeVideo ||
101
+ res.type == PHAssetResourceTypeFullSizeVideo ||
102
+ res.type == PHAssetResourceTypeVideo) {
103
+ return res;
104
+ }
105
+ }
106
+
107
+ return nil ;
108
+ }
109
+
110
+ for (PHAssetResource *res in resources) {
111
+ if (self.mediaType == PHAssetMediaTypeImage ||
112
+ res.type == PHAssetResourceTypeFullSizePhoto) {
113
+ return res;
114
+ }
115
+
116
+ if (self.mediaType == PHAssetMediaTypeVideo ||
117
+ res.type == PHAssetResourceTypeFullSizeVideo) {
118
+ return res;
119
+ }
120
+ }
121
+
122
+ return nil ;
123
+ }
124
+
125
+ - (void )requestAdjustedData : (void (^)(NSData *_Nullable))block {
126
+ PHAssetResource *res = [self getAdjustResource ];
127
+
128
+ PHAssetResourceManager *manager = PHAssetResourceManager.defaultManager ;
129
+ PHAssetResourceRequestOptions *opt = [PHAssetResourceRequestOptions new ];
130
+
131
+ __block double pro = 0 ;
132
+
133
+ opt.networkAccessAllowed = YES ;
134
+ opt.progressHandler = ^(double progress) {
135
+ pro = progress;
136
+ };
137
+
138
+ [manager requestDataForAssetResource: res
139
+ options: opt
140
+ dataReceivedHandler: ^(NSData *_Nonnull data) {
141
+ if (pro != 1 ) {
142
+ return ;
143
+ }
144
+ block (data);
145
+ }
146
+ completionHandler: ^(NSError *_Nullable error){
147
+
148
+ }];
149
+ }
150
+
41
151
@end
0 commit comments