# fluttertpc_export_video_frame **Repository Path**: shijie17/fluttertpc_export_video_frame ## Basic Information - **Project Name**: fluttertpc_export_video_frame - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2024-08-22 - **Last Updated**: 2024-08-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Export Video frame for Flutter A Flutter plugin for iOS and Android for exporting picture from video file. ## Installation add ```export_video_frame``` as a dependency in your pubspec.yaml file. ## Usage ```dart /// Returns whether clean success static Future cleanImageCache() async { final String result = await _channel.invokeMethod('cleanImageCache'); if (result == "success") { return true; } return false; } /// Save image to album /// /// - parameters: /// - file: file of video /// - albumName: save the album name /// - waterMark:assetName "images/water_mark.png" /// - alignment: [0,0]represents the center of the rectangle. /// from -1.0 to +1.0 is the distance from one side of the rectangle to the other side of the rectangle. /// Default value [1,1] repesent right bottom /// - scale: the scale ratio with respect water image size.Default value is 1.0 /// Returns whether save success static Future saveImage(File file, String albumName,{String waterMark,Alignment alignment,double scale}) async { Map para = {"filePath":file.path,"albumName":albumName}; if (waterMark != null) { para.addAll({"waterMark":waterMark}); if (alignment != null) { para.addAll({"alignment":{"x":alignment.x,"y":alignment.y}}); } else { para.addAll({"alignment":{"x":1,"y":1}}); } if (scale != null) { para.addAll({"scale":scale}); } else { para.addAll({"scale":1.0}); } } final bool result = await _channel.invokeMethod('saveImage', para); return result; } /// Returns the file list of the exporting image /// /// - parameters: /// - filePath: file path of video /// - number: export the number of frames /// - quality: scale of export frame."0" is lowest,"1" is origin.("0" is scale for 0.1 in android) static Future> exportImage(String filePath, int number,double quality) async { var para = {"filePath":filePath,"number":number,"quality":quality}; final List list = await _channel.invokeMethod('exportImage', para); var result = list .cast() .map((path) => File.fromUri(Uri.file(path))) .toList(); return result; } /// Returns the file list of the exporting image /// /// - parameters: /// - file: file of video /// - duration: export the duration of frames /// - radian: rotation the frame ,which will export frame.Rotation is clockwise. static Future exportImageBySeconds(File file, Duration duration,double radian) async { var milli = duration.inMilliseconds; var para = {"filePath":file.path,"duration":milli,"radian":radian}; final String path = await _channel .invokeMethod('exportImageBySeconds', para); try { var result = File.fromUri(Uri.file(path)); return result; } catch (e) { throw e; } } /// Returns the file list of the exporting frame for gif file /// /// - parameters: /// - filePath: file path of video /// - quality: scale of export frame."0" is lowest,"1" is origin.("0" is scale for 0.1 in android) static Future> exportGifImage(String filePath, double quality) async { var para = {"filePath":filePath,"quality":quality}; final List list = await _channel.invokeMethod('exportGifImagePathList', para); var result = list .cast() .map((path) => File.fromUri(Uri.file(path))) .toList(); return result; } ``` ### ios If there will be an error when compile ios app.Because flutter use swift is 4.0. located in ios/Podfile Edit your Podfile as follows: ``` ruby target 'Runner' do use_frameworks! # <--- add this ... end post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['ENABLE_BITCODE'] = 'NO' config.build_settings['SWIFT_VERSION'] = '4.2' # <--- add this end end end ``` If you use saveAblum api,you need add the add the following keys to your Info.plist file, located ios/Runner/Info.plist: ```xml NSPhotoLibraryUsageDescription Use Ablum For your purpose ``` ### Android Make sure you add the needed permissions to your Android Manifest Permission. ``` gradle ``` [Example Demo](https://pub.dev/packages/export_video_frame#-example-tab-) ### Ohos Permissions: ``` ohos.permission.WRITE_IMAGEVIDEO ``` ### FAQ - [ ] In ohos, Generating gif images is not supported for the time being.(在ohos中,暂时不支持生成gif图片)