Commit 0c3a83b7 authored by 林生雨's avatar 林生雨

commit

parent 00b2ed0f
......@@ -8,6 +8,11 @@
<list default="true" id="5be6bbb5-7d6e-4540-a24f-d2b3bf78b3ba" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/example/ios/.symlinks/plugins/gengmei_flutter_plugin/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/example/ios/.symlinks/plugins/gengmei_flutter_plugin/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/example/ios/.symlinks/plugins/gengmei_flutter_plugin/example/lib/AlbumModel/page/album/AlbumModel.dart" beforeDir="false" afterPath="$PROJECT_DIR$/example/ios/.symlinks/plugins/gengmei_flutter_plugin/example/lib/AlbumModel/page/album/AlbumModel.dart" afterDir="false" />
<change beforePath="$PROJECT_DIR$/example/ios/.symlinks/plugins/gengmei_flutter_plugin/ios/Classes/GengmeiFlutterPlugin.m" beforeDir="false" afterPath="$PROJECT_DIR$/example/ios/.symlinks/plugins/gengmei_flutter_plugin/ios/Classes/GengmeiFlutterPlugin.m" afterDir="false" />
<change beforePath="$PROJECT_DIR$/example/lib/AlbumModel/page/album/AlbumModel.dart" beforeDir="false" afterPath="$PROJECT_DIR$/example/lib/AlbumModel/page/album/AlbumModel.dart" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ios/Classes/GengmeiFlutterPlugin.m" beforeDir="false" afterPath="$PROJECT_DIR$/ios/Classes/GengmeiFlutterPlugin.m" afterDir="false" />
<change beforePath="$PROJECT_DIR$/lib/ScanImagePlugn.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/ScanImagePlugn.dart" afterDir="false" />
</list>
<ignored path="$PROJECT_DIR$/.dart_tool/" />
<ignored path="$PROJECT_DIR$/.idea/" />
......@@ -27,11 +32,11 @@
<component name="ExecutionTargetManager" SELECTED_TARGET="AKC0218316000622" />
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="true">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/example/lib/AlbumModel/page/album/AlbumModel.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1495">
<caret line="231" column="11" selection-start-line="231" selection-start-column="11" selection-end-line="231" selection-end-column="11" />
<state relative-caret-position="263">
<caret line="101" column="16" lean-forward="true" selection-start-line="101" selection-start-column="16" selection-end-line="101" selection-end-column="16" />
<folding>
<element signature="e#46#66#0" expanded="true" />
</folding>
......@@ -40,34 +45,34 @@
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/example/lib/main.dart">
<entry file="file://$PROJECT_DIR$/example/lib/AlbumModel/page/album/AlbumPage.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3036">
<caret line="144" column="53" selection-start-line="144" selection-start-column="53" selection-end-line="144" selection-end-column="53" />
<state relative-caret-position="190">
<caret line="15" column="2" selection-start-line="15" selection-start-column="2" selection-end-line="15" selection-end-column="2" />
<folding>
<element signature="e#0#17#0" expanded="true" />
<element signature="e#45#62#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/example/lib/AlbumModel/page/album/AlbumPage.dart">
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/lib/ScanImagePlugn.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="132">
<caret line="15" column="2" selection-start-line="15" selection-start-column="2" selection-end-line="15" selection-end-column="2" />
<state relative-caret-position="217">
<caret line="29" selection-start-line="29" selection-end-line="29" />
<folding>
<element signature="e#45#62#0" expanded="true" />
<element signature="e#45#86#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/lib/ScanImagePlugn.dart">
<entry file="file://$USER_HOME$/Downloads/flutter/packages/flutter/lib/src/services/platform_channel.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="836">
<caret line="41" column="1" selection-start-line="41" selection-start-column="1" selection-end-line="41" selection-end-column="1" />
<state relative-caret-position="121">
<caret line="342" column="20" selection-start-line="342" selection-start-column="20" selection-end-line="342" selection-end-column="20" />
</state>
</provider>
</entry>
......@@ -87,8 +92,8 @@
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/example/lib/AlbumModel/repository/AlbumRepository.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="770">
<caret line="40" column="23" selection-start-line="40" selection-start-column="23" selection-end-line="40" selection-end-column="23" />
<state relative-caret-position="207">
<caret line="23" column="43" selection-start-line="23" selection-start-column="30" selection-end-line="23" selection-end-column="43" />
<folding>
<element signature="e#46#106#0" expanded="true" />
</folding>
......@@ -108,8 +113,8 @@
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ios/Classes/GengmeiFlutterPlugin.m">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="11352">
<caret line="536" column="22" selection-start-line="536" selection-start-column="22" selection-end-line="536" selection-end-column="22" />
<state relative-caret-position="11572">
<caret line="548" column="22" selection-start-line="548" selection-start-column="22" selection-end-line="548" selection-end-column="22" />
</state>
</provider>
</entry>
......@@ -154,6 +159,9 @@
<find>onE</find>
<find>DATTTTTT</find>
<find>realPath</find>
<find>_dirList</find>
<find>_onEvent</find>
<find>paseAlbum</find>
</findStrings>
</component>
<component name="Git.Settings">
......@@ -180,16 +188,15 @@
<option value="$PROJECT_DIR$/example/lib/AlbumModel/repository/AlbumRepository.dart" />
<option value="$PROJECT_DIR$/example/lib/AlbumModel/page/album/AlbumPage.dart" />
<option value="$PROJECT_DIR$/lib/gengmei_flutter_plugin.dart" />
<option value="$PROJECT_DIR$/lib/ScanImagePlugn.dart" />
<option value="$PROJECT_DIR$/example/lib/AlbumModel/page/album/AlbumModel.dart" />
<option value="$PROJECT_DIR$/lib/ScanImagePlugn.dart" />
</list>
</option>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="500" />
<option name="y" value="-1080" />
<option name="width" value="1920" />
<option name="height" value="1080" />
<option name="y" value="35" />
<option name="width" value="1440" />
<option name="height" value="811" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectView">
......@@ -296,9 +303,10 @@
<servers />
</component>
<component name="ToolWindowManager">
<frame x="-41" y="-1080" width="1920" height="1080" extended-state="6" />
<frame x="9" y="23" width="1440" height="811" extended-state="6" />
<editor active="true" />
<layout>
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.14696486" />
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.19742489" />
<window_info id="Captures" order="1" side_tool="true" />
<window_info id="Structure" order="2" side_tool="true" />
<window_info id="Image Layers" order="3" />
......@@ -308,12 +316,12 @@
<window_info id="Capture Tool" order="7" />
<window_info id="Favorites" order="8" side_tool="true" />
<window_info anchor="bottom" id="Dart Analysis" order="0" weight="0.32963988" />
<window_info anchor="bottom" id="Run" order="1" weight="0.375" />
<window_info anchor="bottom" id="Run" order="1" visible="true" weight="0.37413073" />
<window_info anchor="bottom" id="TODO" order="2" />
<window_info anchor="bottom" id="Android Profiler" order="3" show_stripe_button="false" />
<window_info anchor="bottom" id="Logcat" order="4" weight="0.5479833" />
<window_info anchor="bottom" id="Logcat" order="4" weight="0.4534075" />
<window_info anchor="bottom" id="Debug" order="5" />
<window_info active="true" anchor="bottom" id="Terminal" order="6" visible="true" weight="0.27327934" />
<window_info anchor="bottom" id="Terminal" order="6" weight="0.44534412" />
<window_info anchor="bottom" id="Event Log" order="7" side_tool="true" />
<window_info anchor="bottom" id="Flutter Performance" order="8" side_tool="true" />
<window_info anchor="bottom" id="Version Control" order="9" />
......@@ -328,17 +336,6 @@
<window_info anchor="right" id="Preview" order="7" />
</layout>
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="Dart">
<url>file://$PROJECT_DIR$/example/lib/AlbumModel/page/album/AlbumModel.dart</url>
<line>74</line>
<option name="timeStamp" value="1" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/test/gengmei_flutter_plugin_test.dart" />
<entry file="file://$USER_HOME$/Downloads/flutter/packages/flutter/lib/src/services/message_codecs.dart">
......@@ -493,13 +490,6 @@
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Downloads/flutter/packages/flutter/lib/src/services/platform_channel.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="6534">
<caret line="306" column="12" selection-start-line="306" selection-start-column="12" selection-end-line="306" selection-end-column="12" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ios/Classes/Image/AlbumItem.h">
<provider selected="true" editor-type-id="text-editor" />
</entry>
......@@ -527,16 +517,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/example/lib/AlbumModel/page/album/AlbumModel.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1495">
<caret line="231" column="11" selection-start-line="231" selection-start-column="11" selection-end-line="231" selection-end-column="11" />
<folding>
<element signature="e#46#66#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/example/lib/main.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3036">
......@@ -547,62 +527,82 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/example/lib/AlbumModel/page/album/AlbumPage.dart">
<entry file="file://$PROJECT_DIR$/lib/gengmei_flutter_plugin.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="132">
<caret line="15" column="2" selection-start-line="15" selection-start-column="2" selection-end-line="15" selection-end-column="2" />
<state relative-caret-position="440">
<caret line="26" column="41" selection-start-line="26" selection-start-column="41" selection-end-line="26" selection-end-column="41" />
<folding>
<element signature="e#45#62#0" expanded="true" />
<element signature="e#0#20#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/ScanImagePlugn.dart">
<entry file="file://$PROJECT_DIR$/lib/SharedPlugin.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="836">
<caret line="41" column="1" selection-start-line="41" selection-start-column="1" selection-end-line="41" selection-end-column="1" />
<state relative-caret-position="330">
<caret line="18" column="39" selection-start-line="18" selection-start-column="28" selection-end-line="18" selection-end-column="39" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/gengmei_flutter_plugin.dart">
<entry file="file://$PROJECT_DIR$/ios/Classes/GengmeiFlutterPlugin.m">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="440">
<caret line="26" column="41" selection-start-line="26" selection-start-column="41" selection-end-line="26" selection-end-column="41" />
<folding>
<element signature="e#0#20#0" expanded="true" />
</folding>
<state relative-caret-position="11572">
<caret line="548" column="22" selection-start-line="548" selection-start-column="22" selection-end-line="548" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ios/Classes/Image/ResultManager.h">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/ios/Classes/Image/ResultManager.m">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/example/lib/AlbumModel/repository/AlbumRepository.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="770">
<caret line="40" column="23" selection-start-line="40" selection-start-column="23" selection-end-line="40" selection-end-column="23" />
<state relative-caret-position="207">
<caret line="23" column="43" selection-start-line="23" selection-start-column="30" selection-end-line="23" selection-end-column="43" />
<folding>
<element signature="e#46#106#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/SharedPlugin.dart">
<entry file="file://$USER_HOME$/Downloads/flutter/packages/flutter/lib/src/services/platform_channel.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330">
<caret line="18" column="39" selection-start-line="18" selection-start-column="28" selection-end-line="18" selection-end-column="39" />
<state relative-caret-position="121">
<caret line="342" column="20" selection-start-line="342" selection-start-column="20" selection-end-line="342" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ios/Classes/GengmeiFlutterPlugin.m">
<entry file="file://$PROJECT_DIR$/example/lib/AlbumModel/page/album/AlbumPage.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="11352">
<caret line="536" column="22" selection-start-line="536" selection-start-column="22" selection-end-line="536" selection-end-column="22" />
<state relative-caret-position="190">
<caret line="15" column="2" selection-start-line="15" selection-start-column="2" selection-end-line="15" selection-end-column="2" />
<folding>
<element signature="e#45#62#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ios/Classes/Image/ResultManager.h">
<provider selected="true" editor-type-id="text-editor" />
<entry file="file://$PROJECT_DIR$/example/lib/AlbumModel/page/album/AlbumModel.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="263">
<caret line="101" column="16" lean-forward="true" selection-start-line="101" selection-start-column="16" selection-end-line="101" selection-end-column="16" />
<folding>
<element signature="e#46#66#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ios/Classes/Image/ResultManager.m">
<provider selected="true" editor-type-id="text-editor" />
<entry file="file://$PROJECT_DIR$/lib/ScanImagePlugn.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="217">
<caret line="29" selection-start-line="29" selection-end-line="29" />
<folding>
<element signature="e#45#86#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
</project>
\ No newline at end of file
......@@ -7,6 +7,7 @@ import 'dart:async';
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:gengmei_flutter_plugin/ScanImagePlugn.dart';
import 'package:gengmei_flutter_plugin/gengmei_flutter_plugin.dart';
import 'package:gengmei_flutter_plugin_example/AlbumModel/LiveData.dart';
......@@ -16,6 +17,26 @@ import 'package:gengmei_flutter_plugin_example/AlbumModel/repository/AlbumReposi
const String MainDir = "IsGengmeiAlbumAllImages";
const String MainDirExplain = "全部相片";
Map<String, List<ScanImageItem>> paseAlbum(Object event) {
var map = Map<String, List<dynamic>>.from(event);
var newMap = Map<String, List<ScanImageItem>>();
map.forEach((k, v) {
var list = List<Map>.from(v);
var scanList = List<ScanImageItem>();
list.forEach((listMap) {
var map2 = Map<String, dynamic>.from(listMap);
ScanImageItem item = new ScanImageItem();
item.path = map2["path"];
item.isVideo = map2["isVideo"] == "T" ? true : false;
item.during = map2["during"] ?? "0";
scanList.add(item);
});
newMap[k] = scanList;
});
return newMap;
}
class AlbumModel {
LiveData<List<ScanImageItem>> albumLive = LiveData();
LiveData<List<DirBean>> dirLive = LiveData();
......@@ -55,39 +76,29 @@ class AlbumModel {
}
void _onEvent(Object event) {
var map = (event as Map);
if (_mainValue == null || _mainValue.length == 0) {
_mainValue = map;
} else {
_mainValue.forEach((k, itemList) {
var key = map[k];
if (key != null) {
for (int i = 0; i < itemList.length; i++) {
if (key[i] == null) {
continue;
}
itemList[i].path = key[i]["path"];
itemList[i].realPath = key[i]["realPath"];
}
}
});
}
// var map = Map<String, List<dynamic>>.from(event);
//
// var newMap = Map<String, List<ScanImageItem>>();
// map.forEach((k, v) {
// var key = newMap["k"];
// if(key==null){
// newMap["k"]=new List<ScanImageItem>();
// }
// v.forEach((value){
// ScanImageItem item=new ScanImageItem();
// item.path=value["path"];
// item.isVideo=value["isVideo"]=="T"?true:false;
// item.during = value["during"] ?? "0";
// newMap["k"].add(item);
// var map = (event as Map);
// if (_mainValue == null || _mainValue.length == 0) {
// _mainValue = map;
// } else {
// _mainValue.forEach((k, itemList) {
// var key = map[k];
// if (key != null) {
// for (int i = 0; i < itemList.length; i++) {
// if (key[i] == null) {
// continue;
// }
// itemList[i].path = key[i]["path"];
// itemList[i].realPath = key[i]["realPath"];
// }
// }
// });
// });
// }
compute(paseAlbum, event).then((value){
_mainValue = value;
albumLive.notifyView(_mainValue[_nowDirName]);
});
// _mainValue=newMap;
// var list = map[_nowDirName];
// _mainValue.forEach((k, itemList) {
......@@ -119,7 +130,7 @@ class AlbumModel {
// }
// }
// print("EVENTTTT !! ${tempList.length} ${tempList}");
albumLive.notifyView(_mainValue[_nowDirName]);
}
void _onError(Object error) {
......@@ -132,7 +143,8 @@ class AlbumModel {
.receiveBroadcastStream()
.listen(_onEvent, onError: _onError);
// }
AlbumRepository.getInstance().scanPhoneImg().listen((value) {
AlbumRepository.getInstance().scanPhoneImg()
.listen((value) {
if (value != null) {
_mainValue = value;
value.forEach((key, eachValue) {
......@@ -234,7 +246,6 @@ class AlbumModel {
}
}
void iosAlbum(List<String> list, BuildContext context, Function fun) {
GengmeiFlutterPlugin.ios_album_path(list).then((value) {
fun(value);
......@@ -254,7 +265,8 @@ class AlbumModel {
} else {
print(data);
ScanImageItem item = new ScanImageItem();
item.realPath = data["realPath"]==null?null:data["realPath"] as String;
item.realPath =
data["realPath"] == null ? null : data["realPath"] as String;
item.path = data["path"] as String;
item.isVideo = false;
String foldName = data["folderName"] as String;
......
......@@ -13,8 +13,9 @@
@property(nonatomic) long resultKey;
@property(nonatomic)long nativeCameraKey;
@property(strong,atomic)NSMutableDictionary<NSString*,NSMutableArray<NSMutableDictionary<NSString*,NSObject*>*>*>* finalMap;
@property(strong,atomic)NSMutableDictionary<NSString*,NSMutableArray<NSMutableDictionary<NSString*,NSObject*>*>*>* finalMapTemp;
@property(nonatomic,strong) UIImagePickerController *imagePicker;
@property(atomic)Boolean quitPage;
@property(nonatomic)Boolean quitPage;
@property(atomic)Boolean execdTask;
@property(atomic)Boolean copyScareImgOk;
@property(atomic)Boolean finishScanImg;
......@@ -44,7 +45,8 @@ NSString *cacheDirectory;
[registrar addMethodCallDelegate:instance channel:channel];
assetCollectionList = [NSMutableArray array];
viewController =[UIApplication sharedApplication].delegate.window.rootViewController;
queue = dispatch_queue_create("com.gengmei_flutter_plugin", DISPATCH_QUEUE_CONCURRENT);
// queue = dispatch_queue_create("com.gengmei_flutter_plugin", DISPATCH_QUEUE_CONCURRENT);
queue = dispatch_queue_create("com.gengmei_flutter_plugin", DISPATCH_QUEUE_SERIAL);
FlutterEventChannel* chargingChannel = [FlutterEventChannel
eventChannelWithName:@"gengmei_flutter_plugin_event"
binaryMessenger:[registrar messenger]];
......@@ -295,12 +297,14 @@ NSString *cacheDirectory;
}
CGSize temp=CGSizeMake(picWidth*tempScareSize, picHeight*tempScareSize);
[[PHImageManager defaultManager] requestImageForAsset:assets targetSize:temp contentMode:PHImageContentModeDefault options:imageRequestOption resultHandler:^(UIImage * _Nullable res, NSDictionary * _Nullable info) {
[[PHImageManager defaultManager] requestImageDataForAsset:assets options:imageRequestOption resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
// [[PHImageManager defaultManager] requestImageForAsset:assets targetSize:temp contentMode:PHImageContentModeDefault options:imageRequestOption resultHandler:^(UIImage * _Nullable res, NSDictionary * _Nullable info) {
@autoreleasepool{
UIImage * res=[UIImage imageWithData:imageData];
NSData *data = UIImageJPEGRepresentation(res, 0.8) ;
[data writeToFile:tempTake atomically:YES];
data=nil;
res=nil;
data=nil;
}
NSMutableDictionary *dict=[[NSMutableDictionary alloc] init];
[dict setObject:path[i] forKey:@"path"];
......@@ -433,6 +437,9 @@ NSString *cacheDirectory;
if (self.finalMap==nil) {
self.finalMap=[NSMutableDictionary dictionary];
}
if(self.finalMapTemp==nil){
self.finalMapTemp=[NSMutableDictionary dictionary];
}
if(self.scanMap==nil){
self.scanMap=[NSMutableDictionary dictionary];
}
......@@ -444,6 +451,7 @@ NSString *cacheDirectory;
}
[self.channelList removeAllObjects];
[self.finalMap removeAllObjects];
[self.finalMapTemp removeAllObjects];
[self.scanMap removeAllObjects];
[self.takePhotoMap removeAllObjects];
self.nowSize=0;
......@@ -529,6 +537,10 @@ NSString *cacheDirectory;
if (arr==nil) {
self.finalMap[@"IsGengmeiAlbumAllImages"]=[NSMutableArray array];
}
NSMutableArray *arrTemp=self.finalMapTemp[@"IsGengmeiAlbumAllImages"];
if(arrTemp==nil){
self.finalMapTemp[@"IsGengmeiAlbumAllImages"]=[NSMutableArray array];
}
}
-(void)upImgs{
......@@ -539,13 +551,64 @@ NSString *cacheDirectory;
});
}
-(void)reslutImg:(long)resultId{
dispatch_async(dispatch_get_main_queue(), ^{
if(!self.quitPage){
[[ResultManager sharedSingleton] resultSuccess:[NSNumber numberWithLong:resultId] :self.finalMapTemp];
}
});
}
-(void) saveItemAndUpload:(NSMutableDictionary*)queryItemDict :(PHAsset*)assets :(NSString*)tmpPath :(NSString*)docName :(long)resultId{
NSLog(@"RUNNING THREAD %@",[NSThread currentThread]);
// @synchronized (self) {
self.nowSize++;
[self.scanMap setObject:assets forKey:tmpPath];
NSMutableArray * arr=self.finalMap[docName];
if (arr==nil) {
self.finalMap[docName]=[NSMutableArray array];
[self.finalMap[docName] addObject:queryItemDict];
}else{
[self.finalMap[docName] addObject:queryItemDict];
}
[self.finalMap[@"IsGengmeiAlbumAllImages"] addObject:queryItemDict];
NSLog(@"SCARE SIZEEE %d %d ",self.nowSize,self.needSize);
if(self.needSize>150){
if(self.nowSize<=151){
NSMutableArray * arr=self.finalMapTemp[docName];
if (arr==nil) {
self.finalMapTemp[docName]=[NSMutableArray array];
[self.finalMapTemp[docName] addObject:queryItemDict];
}else{
[self.finalMapTemp[docName] addObject:queryItemDict];
}
[self.finalMapTemp[@"IsGengmeiAlbumAllImages"] addObject:queryItemDict];
}
if(self.nowSize==151){
[self reslutImg:resultId];
}else if(self.nowSize==self.needSize){
self.finishScanImg=true;
[self upImgs];
}
}else{
if (self.nowSize==self.needSize) {
self.finishScanImg=true;
[self reslutImg:resultId];
self.finalMap=[self.finalMapTemp mutableCopy];
}
}
// }
}
-(void) copyImg:(long)resultId{
// self.copySize=0;
NSLog(@"START THREAD %@",[NSThread currentThread]);
self.copySize=0;
self.nowSize=0;
PHImageRequestOptions *imageRequestOption = [[PHImageRequestOptions alloc] init];
imageRequestOption.synchronous =NO;
imageRequestOption.networkAccessAllowed = YES;
imageRequestOption.deliveryMode=PHImageRequestOptionsDeliveryModeHighQualityFormat;
imageRequestOption.deliveryMode=PHImageRequestOptionsDeliveryModeHighQualityFormat;
//PHImageRequestOptionsDeliveryModeHighQualityFormat。//PHImageRequestOptionsDeliveryModeFastFormat
// imageRequestOption.deliveryMode=PHImageRequestOptionsDeliveryModeFastFormat;
imageRequestOption.resizeMode=PHImageRequestOptionsResizeModeFast;
......@@ -559,9 +622,6 @@ NSString *cacheDirectory;
AlbumItem * item=assetCollectionList[j];
PHFetchResult<PHAsset *> * assetResult =[item assets];
for (int i=0; i<[assetResult count]; i++) {
if(self.quitPage){
return;
}
__block NSString* docName=[item collectionTitle];
PHAsset * assets=[assetResult objectAtIndex:i];
__block NSString * imgName=[assets valueForKey:@"filename"];
......@@ -574,27 +634,14 @@ NSString *cacheDirectory;
if(assets.mediaType==PHAssetMediaTypeVideo){
if ([fileManager fileExistsAtPath:tmpPath]==YES){
[[PHImageManager defaultManager]requestAVAssetForVideo:assets options:options resultHandler:^(AVAsset * _Nullable asset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {
AVURLAsset *urlAsset = (AVURLAsset *)asset;
NSMutableDictionary* queryItemDict = [NSMutableDictionary dictionary];
[queryItemDict setObject:[self getVideoDuring:urlAsset.duration] forKey:@"during"];
[queryItemDict setObject:tmpPath forKey:@"path"];
[queryItemDict setObject:@"T" forKey:@"isVideo"];
@synchronized (self) {
self.nowSize++;
[self.scanMap setObject:assets forKey:tmpPath];
NSMutableArray * arr=self.finalMap[docName];
if (arr==nil) {
self.finalMap[docName]=[NSMutableArray array];
[self.finalMap[docName] addObject:queryItemDict];
}else{
[self.finalMap[docName] addObject:queryItemDict];
}
[self.finalMap[@"IsGengmeiAlbumAllImages"] addObject:queryItemDict];
}
NSLog(@"SCARE SIZEEE %d %d ",self.nowSize,self.needSize);
if (self.nowSize==self.needSize) {
[self resultImgs:resultId];
}
dispatch_async(queue, ^{
AVURLAsset *urlAsset = (AVURLAsset *)asset;
NSMutableDictionary* queryItemDict = [NSMutableDictionary dictionary];
[queryItemDict setObject:[self getVideoDuring:urlAsset.duration] forKey:@"during"];
[queryItemDict setObject:tmpPath forKey:@"path"];
[queryItemDict setObject:@"T" forKey:@"isVideo"];
[self saveItemAndUpload:queryItemDict :assets :tmpPath :docName :resultId];
});
}];
}else{
int picWidth=[assets pixelWidth];
......@@ -623,22 +670,7 @@ NSString *cacheDirectory;
[queryItemDict setObject:[self getVideoDuring:urlAsset.duration] forKey:@"during"];
[queryItemDict setObject:tmpPath forKey:@"path"];
[queryItemDict setObject:@"T" forKey:@"isVideo"];
@synchronized (self) {
self.nowSize++;
[self.scanMap setObject:assets forKey:tmpPath];
NSMutableArray * arr=self.finalMap[docName];
if (arr==nil) {
self.finalMap[docName]=[NSMutableArray array];
[self.finalMap[docName] addObject:queryItemDict];
}else{
[self.finalMap[docName] addObject:queryItemDict];
}
[self.finalMap[@"IsGengmeiAlbumAllImages"] addObject:queryItemDict];
NSLog(@"SCARE SIZEEE %d %d ",self.nowSize,self.needSize);
if (self.nowSize==self.needSize) {
[self resultImgs:resultId];
}
}
[self saveItemAndUpload:queryItemDict :assets :tmpPath :docName :resultId];
}];
}];
}
......@@ -648,22 +680,7 @@ NSString *cacheDirectory;
NSMutableDictionary* queryItemDict = [NSMutableDictionary dictionary];
[queryItemDict setObject:tmpPath forKey:@"path"];
[queryItemDict setObject:@"F" forKey:@"isVideo"];
@synchronized (self) {
self.nowSize++;
[self.scanMap setObject:assets forKey:tmpPath];
NSMutableArray * arr=self.finalMap[docName];
if (arr==nil) {
self.finalMap[docName]=[NSMutableArray array];
[self.finalMap[docName] addObject:queryItemDict];
}else{
[self.finalMap[docName] addObject:queryItemDict];
}
[self.finalMap[@"IsGengmeiAlbumAllImages"] addObject:queryItemDict];
NSLog(@"SCARE SIZEEE %d %d ",self.nowSize,self.needSize);
if (self.nowSize==self.needSize) {
[self resultImgs:resultId];
}
}
[self saveItemAndUpload:queryItemDict :assets :tmpPath :docName :resultId];
}else{
int picWidth=[assets pixelWidth];
int picHeight=[assets pixelHeight];
......@@ -688,23 +705,8 @@ NSString *cacheDirectory;
NSMutableDictionary* queryItemDict = [NSMutableDictionary dictionary];
[queryItemDict setObject:tmpPath forKey:@"path"];
[queryItemDict setObject:@"F" forKey:@"isVideo"];
// self.copySize++;
@synchronized (self) {
self.nowSize++;
[self.scanMap setObject:assets forKey:tmpPath];
NSMutableArray * arr=self.finalMap[docName];
if (arr==nil) {
self.finalMap[docName]=[NSMutableArray array];
[self.finalMap[docName] addObject:queryItemDict];
}else{
[self.finalMap[docName] addObject:queryItemDict];
}
[self.finalMap[@"IsGengmeiAlbumAllImages"] addObject:queryItemDict];
NSLog(@"SCARE SIZEEE %d %d ",self.nowSize,self.needSize);
if (self.nowSize==self.needSize) {
[self resultImgs:resultId];
}
}
// self.copySize++;
[self saveItemAndUpload:queryItemDict :assets :tmpPath :docName :resultId];
}];
}
}
......@@ -835,28 +837,6 @@ NSString *cacheDirectory;
// }
//}
-(void)resultImgs:(long)resultId{
dispatch_async(dispatch_get_main_queue(), ^{
self.finishScanImg=true;
if(!self.quitPage){
[[ResultManager sharedSingleton] resultSuccess:[NSNumber numberWithLong:resultId] :self.finalMap];
// dispatch_async(queue, ^{
// [self execRealImg:resultId];
// });
}
});
}
-(void)reslutImg:(long)resultId{
dispatch_async(dispatch_get_main_queue(), ^{
if(!self.quitPage){
[[ResultManager sharedSingleton] resultSuccess:[NSNumber numberWithLong:resultId] :self.finalMap];
}
});
}
//-(void)searchPath:(NSString*)finalRealPath :(NSString*)tmpPath :(NSString*)docName{
// NSMutableArray<NSMutableDictionary<NSString*,NSObject*>*>* array=self.finalMap[docName];
......
......@@ -2,27 +2,32 @@
* @author lsy
* @date 2019-09-09
**/
import 'package:flutter/foundation.dart';
import 'package:flutter/src/services/platform_channel.dart';
Map<String, List<ScanImageItem>> changData(Map images) {
Map<String, List<ScanImageItem>> newMap = new Map();
images.forEach((k, v) {
List<ScanImageItem> tempList = new List();
for (var item in v) {
ScanImageItem scanImageItem = new ScanImageItem();
scanImageItem.path = item["path"] ?? "";
scanImageItem.size = item["size"] ?? 0;
scanImageItem.realPath = item["realPath"] ?? "";
scanImageItem.isVideo = item["isVideo"] == "T" ? true : false;
scanImageItem.during = item["during"] ?? "0";
tempList.add(scanImageItem);
}
newMap.putIfAbsent(k, () => tempList);
});
return newMap;
}
class ScanImagePlugn {
static Future<Map<String, List<ScanImageItem>>> scanImages(
MethodChannel channel) async {
var images = await channel.invokeMapMethod("scan_image_picker");
Map<String, List<ScanImageItem>> newMap = new Map();
images.forEach((k, v) {
List<ScanImageItem> tempList = new List();
for (var item in v) {
ScanImageItem scanImageItem = new ScanImageItem();
scanImageItem.path = item["path"] ?? "";
scanImageItem.size = item["size"] ?? 0;
scanImageItem.realPath = item["realPath"] ?? "";
scanImageItem.isVideo = item["isVideo"] == "T" ? true : false;
scanImageItem.during = item["during"] ?? "0";
tempList.add(scanImageItem);
}
newMap.putIfAbsent(k, () => tempList);
});
return newMap;
return Future.value(compute(changData, images));
}
static Future<Map> nativeCamera(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment