{"id":32308125,"url":"https://github.com/flutter-package/images_picker","last_synced_at":"2026-02-19T21:56:09.095Z","repository":{"id":40393782,"uuid":"297555559","full_name":"flutter-package/images_picker","owner":"flutter-package","description":"Flutter plugin for selecting images/videos from the Android and iOS gallery, and taking pictures/videos with the camera","archived":false,"fork":false,"pushed_at":"2023-11-15T03:05:06.000Z","size":323,"stargazers_count":67,"open_issues_count":43,"forks_count":107,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-01-11T10:41:38.135Z","etag":null,"topics":["album","android","camera","compress","crop","flutter","flutter-plugin","gallery","imagepick","images-picker","ios","photo","picker","pictures","video","wechat"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flutter-package.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-09-22T06:24:57.000Z","updated_at":"2025-07-04T09:29:37.000Z","dependencies_parsed_at":"2024-01-13T07:23:38.339Z","dependency_job_id":"0bbb62ce-70f0-45a4-978a-502e985f6e3d","html_url":"https://github.com/flutter-package/images_picker","commit_stats":{"total_commits":34,"total_committers":3,"mean_commits":"11.333333333333334","dds":"0.32352941176470584","last_synced_commit":"1ef97f2f80f8d91697471371ac0d8fc2d6e0574b"},"previous_names":["chavesgu/images_picker"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/flutter-package/images_picker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutter-package%2Fimages_picker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutter-package%2Fimages_picker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutter-package%2Fimages_picker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutter-package%2Fimages_picker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flutter-package","download_url":"https://codeload.github.com/flutter-package/images_picker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutter-package%2Fimages_picker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29634499,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T18:02:07.722Z","status":"ssl_error","status_checked_at":"2026-02-19T18:01:46.144Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["album","android","camera","compress","crop","flutter","flutter-plugin","gallery","imagepick","images-picker","ios","photo","picker","pictures","video","wechat"],"created_at":"2025-10-23T07:27:18.727Z","updated_at":"2026-02-19T21:56:09.089Z","avatar_url":"https://github.com/flutter-package.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# images_picker\n\n[![images-picker](https://img.shields.io/badge/pub-1.2.10-orange)](https://pub.dev/packages/images_picker)\n\nFlutter 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\n\nios(10+): [ZLPhotoBrowser](https://github.com/longitachi/ZLPhotoBrowser)\n\nandroid(21+): [PictureSelector](https://github.com/LuckSiege/PictureSelector)\n\n### Support\n- pick multiple images/videos from photo album (wechat style)\n- use camera to take image/video\n- crop images with custom aspectRatio\n- compress images with quality/maxSize\n- save image/video to album/gallery\n- localizations currently support\n  - System, Chinese, ChineseTraditional, English, Japanese, French, Korean, German, Vietnamese,\n    \n### Install\nFor ios:\n```\n\u003ckey\u003eNSCameraUsageDescription\u003c/key\u003e\n\u003cstring\u003eExample usage description\u003c/string\u003e\n\u003ckey\u003eNSMicrophoneUsageDescription\u003c/key\u003e\n\u003cstring\u003eExample usage description\u003c/string\u003e\n\u003ckey\u003eNSPhotoLibraryUsageDescription\u003c/key\u003e\n\u003cstring\u003eExample usage description\u003c/string\u003e\n```\nFor android:\n```\n\u003cuses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" /\u003e\n\u003cuses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" /\u003e\n\u003cuses-permission android:name=\"android.permission.CAMERA\" /\u003e\n\u003cuses-permission android:name=\"android.permission.RECORD_AUDIO\" /\u003e\n```\n\n```\nGoto android/app/build.gradle\nminSdkVersion 21\n```\n\nAnd,\n```yaml\nimages_picker: ^newest\n```\n```dart\nimport \"package:images_picker/images_picker.dart\";\n```\n\n### Usage\n\n- simple picker image\n\n```dart\nFuture getImage() async {\n    List\u003cMedia\u003e res = await ImagesPicker.pick(\n      count: 3,\n      pickType: PickType.image,\n    );\n// Media\n// .path\n// .thumbPath (path for video thumb)\n// .size (kb)\n}\n```\n- simple picker video\n```dart\nFuture getImage() async {\n    List\u003cMedia\u003e res = await ImagesPicker.pick(\n      count: 3,\n      pickType: PickType.video,\n    );\n// Media\n// .path\n// .thumbPath (path for video thumb)\n// .size (kb)\n}\n```\n- simple open camera\n```dart\nImagesPicker.openCamera(\n  pickType: PickType.video,\n  maxTime: 15, // record video max time\n);\n```\n- add gif support\n```dart\nImagesPicker.pick(\n  // ...\n  gif: true, // default is true\n);\n```\n- add max video duration pick\n```dart\nImagesPicker.pick(\n  // ...\n  maxTime: 30, // second\n);\n```\n- add cropper (gif crop unsupported)\n```dart\nImagesPicker.pick(\n  // ...\n  // when cropOpt isn't null, crop is enabled\n  cropOpt: CropOption(\n    aspectRatio: CropAspectRatio.custom,\n    cropType: CropType.rect, // currently for android\n  ),\n);\n```\n- add compress\n```dart\nImagesPicker.pick(\n  // ...\n  // when maxSize/quality isn't null, compress is enabled\n  quality: 0.8, // only for android\n  maxSize: 500, // only for ios (kb)\n);\n```\n- set language\n```dart\nImagesPicker.pick(\n  language: Language.English,\n// you can set Language.System for following phone language\n)\n```\n- save file to album\n```dart\nImagesPicker.saveImageToAlbum(file, albumName: \"\");\nImagesPicker.saveVideoToAlbum(file, albumName: \"\");\n```\n- save network file to album\n\n**because the HTTP request is uncontrollable in plugin(such as progress),you must download file ahead of time**\n```dart\nvoid save() async {\n    File file = await downloadFile('https://xxx.example.com/xx.png');\n    bool res = await ImagesPicker.saveImageToAlbum(file, albumName: \"\");\n    print(res);\n}\n\nFuture\u003cFile\u003e downloadFile(String url) async {\n  Dio simple = Dio();\n  String savePath = Directory.systemTemp.path + '/' + url.split('/').last;\n  await simple.download(url, savePath,\n      options: Options(responseType: ResponseType.bytes));\n  print(savePath);\n  File file = new File(savePath);\n  return file;\n}\n```\n### All params\n```dart\n// for pick\nint count = 1,\nPickType pickType = PickType.image,\nbool gif = true,\nint maxTime = 120,\nCropOption cropOpt,\nint maxSize,\ndouble quality,\n\n// for camera\nPickType pickType = PickType.image,\nint maxTime = 15,\nCropOption cropOpt,\nint maxSize,\ndouble quality,\n```\n### proguard-rules\n```\n-keep class com.luck.picture.lib.** { *; }\n\n-dontwarn com.yalantis.ucrop**\n-keep class com.yalantis.ucrop** { *; }\n-keep interface com.yalantis.ucrop** { *; }\n```\n\n# License\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflutter-package%2Fimages_picker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflutter-package%2Fimages_picker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflutter-package%2Fimages_picker/lists"}