Search packages, repositories and app categories

GitHub repositoryflutter-package/images_picker

images_picker

Flutter plugin for selecting images/videos from the Android and iOS gallery, and taking pictures/videos with the camera

images_picker project cover
Stars
66
Forks
107
Last push (UTC)
Nov 15, 2023
Project status
Active

Original README

English project snapshot. Visit GitHub for the latest content.

images_picker

images-picker

Flutter plugin for selecting images/videos from the Android and iOS image library, and taking pictures/videos with the camera,save image/video to album/gallery

ios(10+): ZLPhotoBrowser

android(21+): PictureSelector

Support
  • pick multiple images/videos from photo album (wechat style)
  • use camera to take image/video
  • crop images with custom aspectRatio
  • compress images with quality/maxSize
  • save image/video to album/gallery
  • localizations currently support
    • System, Chinese, ChineseTraditional, English, Japanese, French, Korean, German, Vietnamese,
Install

For ios:

<key>NSCameraUsageDescription</key>
<string>Example usage description</string>
<key>NSMicrophoneUsageDescription</key>
<string>Example usage description</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Example usage description</string>

For android:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Goto android/app/build.gradle
minSdkVersion 21

And,

images_picker: ^newest
import "package:images_picker/images_picker.dart";
Usage
  • simple picker image
Future getImage() async {
    List<Media> res = await ImagesPicker.pick(
      count: 3,
      pickType: PickType.image,
    );
// Media
// .path
// .thumbPath (path for video thumb)
// .size (kb)
}
  • simple picker video
Future getImage() async {
    List<Media> res = await ImagesPicker.pick(
      count: 3,
      pickType: PickType.video,
    );
// Media
// .path
// .thumbPath (path for video thumb)
// .size (kb)
}
  • simple open camera
ImagesPicker.openCamera(
  pickType: PickType.video,
  maxTime: 15, // record video max time
);
  • add gif support
ImagesPicker.pick(
  // ...
  gif: true, // default is true
);
  • add max video duration pick
ImagesPicker.pick(
  // ...
  maxTime: 30, // second
);
  • add cropper (gif crop unsupported)
ImagesPicker.pick(
  // ...
  // when cropOpt isn't null, crop is enabled
  cropOpt: CropOption(
    aspectRatio: CropAspectRatio.custom,
    cropType: CropType.rect, // currently for android
  ),
);
  • add compress
ImagesPicker.pick(
  // ...
  // when maxSize/quality isn't null, compress is enabled
  quality: 0.8, // only for android
  maxSize: 500, // only for ios (kb)
);
  • set language
ImagesPicker.pick(
  language: Language.English,
// you can set Language.System for following phone language
)
  • save file to album
ImagesPicker.saveImageToAlbum(file, albumName: "");
ImagesPicker.saveVideoToAlbum(file, albumName: "");
  • save network file to album

because the HTTP request is uncontrollable in plugin(such as progress),you must download file ahead of time

void save() async {
    File file = await downloadFile('https://xxx.example.com/xx.png');
    bool res = await ImagesPicker.saveImageToAlbum(file, albumName: "");
    print(res);
}

Future<File> downloadFile(String url) async {
  Dio simple = Dio();
  String savePath = Directory.systemTemp.path + '/' + url.split('/').last;
  await simple.download(url, savePath,
      options: Options(responseType: ResponseType.bytes));
  print(savePath);
  File file = new File(savePath);
  return file;
}
All params
// for pick
int count = 1,
PickType pickType = PickType.image,
bool gif = true,
int maxTime = 120,
CropOption cropOpt,
int maxSize,
double quality,

// for camera
PickType pickType = PickType.image,
int maxTime = 15,
CropOption cropOpt,
int maxSize,
double quality,
proguard-rules
-keep class com.luck.picture.lib.** { *; }

-dontwarn com.yalantis.ucrop**
-keep class com.yalantis.ucrop** { *; }
-keep interface com.yalantis.ucrop** { *; }

License

MIT License

flutter-package GitHub avatar
GitHub author

flutter-package ↗

provider some flutter plugin package

LanguagesJavaSwiftDartRubyObjective-C

Categories

Dependencies used

Dependency list 2 items

  • flutter{"sdk":"flutter"}
  • flutter_testDevelopment{"sdk":"flutter"}

How do I choose a repository?

Start with your use case, compare repository activity, and check the original project before adopting it.

  1. Search by repository name, owner or description, then narrow the results by topic.
  2. Compare stars, forks and recent pushes. Stars show community interest, not a guarantee of quality.
  3. Read the README, license and issues on GitHub before using a project.

Sources and maintenance

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗