Skip to content

Commit 032bda9

Browse files
committed
Merge branch 'master' of https://github.com/CaiJingLong/flutter_photo_manager into master
2 parents 21e103c + bd845e9 commit 032bda9

File tree

3 files changed

+118
-16
lines changed

3 files changed

+118
-16
lines changed

ios/Classes/core/PHAsset+PHAsset_getTitle.h

+7
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,17 @@
99

1010
NS_ASSUME_NONNULL_BEGIN
1111

12+
1213
@interface PHAsset (PHAsset_getTitle)
1314

1415
- (NSString*)title;
1516

17+
- (BOOL)isAdjust;
18+
19+
- (PHAssetResource *)getAdjustResource;
20+
21+
- (void)requestAdjustedData:(void (^)(NSData *_Nullable result))block;
22+
1623
@end
1724

1825
NS_ASSUME_NONNULL_END

ios/Classes/core/PHAsset+PHAsset_getTitle.m

+110
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,114 @@ - (NSString *)title {
3838
}
3939
}
4040

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+
41151
@end

ios/Classes/core/PMManager.m

+1-16
Original file line numberDiff line numberDiff line change
@@ -592,22 +592,7 @@ - (BOOL)isImage:(PHAssetResource *)resource {
592592

593593
- (void)fetchOriginImageFile:(PHAsset *)asset
594594
resultHandler:(ResultHandler *)handler {
595-
NSArray<PHAssetResource *> *resources =
596-
[PHAssetResource assetResourcesForAsset:asset];
597-
// find asset
598-
NSLog(@"The asset has %lu resources.", (unsigned long) resources.count);
599-
PHAssetResource *imageResource;
600-
601-
if (resources.firstObject && [self isImage:resources.firstObject]) {
602-
imageResource = resources.firstObject;
603-
} else {
604-
for (PHAssetResource *resource in resources) {
605-
if ([self isImage:resource]) {
606-
imageResource = resource;
607-
break;
608-
}
609-
}
610-
}
595+
PHAssetResource *imageResource = [asset getAdjustResource];
611596

612597
if (!imageResource) {
613598
[handler reply:nil];

0 commit comments

Comments
 (0)