{"id":13990184,"url":"https://github.com/akshay2211/PixImagePicker","last_synced_at":"2025-07-22T12:31:03.897Z","repository":{"id":32378298,"uuid":"132399277","full_name":"akshay2211/PixImagePicker","owner":"akshay2211","description":"Pix is a Whatsapp image picker replica. with this, you can integrate an image picker just like WhatsApp.","archived":false,"fork":false,"pushed_at":"2024-08-04T17:09:22.000Z","size":16921,"stargazers_count":867,"open_issues_count":1,"forks_count":218,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-07-05T07:26:04.585Z","etag":null,"topics":["android","android-library","hacktoberfest","hacktoberfest2021","imagepicker","kotlin","photo-gallery","picker","whatsapp"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akshay2211.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"akshay2211","patreon":null,"open_collective":"akshay-sharma","ko_fi":"akshay2211","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://xscode.com/akshay2211/piximagepicker"]}},"created_at":"2018-05-07T02:56:26.000Z","updated_at":"2025-07-03T13:53:31.000Z","dependencies_parsed_at":"2023-01-14T21:04:21.522Z","dependency_job_id":"400afd08-7926-431b-9937-1be021b5b605","html_url":"https://github.com/akshay2211/PixImagePicker","commit_stats":{"total_commits":273,"total_committers":18,"mean_commits":"15.166666666666666","dds":"0.14652014652014655","last_synced_commit":"c832dae96d7b4d3698a7b4b62980bd7b0372c54b"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/akshay2211/PixImagePicker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshay2211%2FPixImagePicker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshay2211%2FPixImagePicker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshay2211%2FPixImagePicker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshay2211%2FPixImagePicker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akshay2211","download_url":"https://codeload.github.com/akshay2211/PixImagePicker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshay2211%2FPixImagePicker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265245811,"owners_count":23734103,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["android","android-library","hacktoberfest","hacktoberfest2021","imagepicker","kotlin","photo-gallery","picker","whatsapp"],"created_at":"2024-08-09T13:02:26.208Z","updated_at":"2025-07-22T12:31:03.034Z","avatar_url":"https://github.com/akshay2211.png","language":"Kotlin","funding_links":["https://github.com/sponsors/akshay2211","https://opencollective.com/akshay-sharma","https://ko-fi.com/akshay2211","https://xscode.com/akshay2211/piximagepicker","https://opencollective.com/piximagepicker","https://www.paypal.me/akshay2211"],"categories":["Kotlin"],"sub_categories":[],"readme":"![Preview image](media/header.gif)\n\n# Pix (WhatsApp Style Image and Video Picker)\n\nPix is a WhatsApp image picker replica. with this you can integrate a image picker just like WhatsApp.\n\n[![Android Weekly](https://img.shields.io/badge/Featured%20in%20androidweekly.net-Issue%20%23476-blue.svg?style=flat-square)](https://androidweekly.net/issues/issue-476)\n[![Google Dev Library](https://img.shields.io/badge/Google%20Dev%20Library-PixImagePicker-brightgreen.svg?style=flat-square)](https://devlibrary.withgoogle.com/products/android/repos/akshay2211-PixImagePicker)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/887abd593a5a499495c4f071accb132a)](https://app.codacy.com/app/akshay2211/PixImagePicker?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=akshay2211/PixImagePicker\u0026utm_campaign=Badge_Grade_Dashboard)\n[![](https://img.shields.io/badge/Android%20Arsenal-PixImagePicker-blue.svg?style=flat-square)](https://android-arsenal.com/details/1/6935)\n[![](https://img.shields.io/badge/Medium-Pix-black.svg?style=flat-square)](https://medium.com/@fxn769/pix-media-picker-android-library-1ec3c5e5f91a)\n[![](https://img.shields.io/badge/API-16%2B-orange.svg?style=flat-square)](https://android-arsenal.com/api?level=16)\n[![](https://img.shields.io/badge/Awesome%20Android-PixImagePicker-green.svg?style=flat-square)](https://android.libhunt.com/piximagepicker-alternatives)\n[![Pix Image Picker](https://www.appbrain.com/stats/libraries/shield/pix-image-picker.svg)](https://www.appbrain.com/stats/libraries/details/pix-image-picker/pix-image-picker)\n\u003cimg src=\"http://img.shields.io/liberapay/receives/akshay2211.svg?logo=liberapay\"\u003e\n[![xscode](https://img.shields.io/badge/Available%20on-xs%3Acode-blue?style=?style=plastic\u0026logo=appveyor\u0026logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRF////////VXz1bAAAAAJ0Uk5T/wDltzBKAAAAlUlEQVR42uzXSwqAMAwE0Mn9L+3Ggtgkk35QwcnSJo9S+yGwM9DCooCbgn4YrJ4CIPUcQF7/XSBbx2TEz4sAZ2q1RAECBAiYBlCtvwN+KiYAlG7UDGj59MViT9hOwEqAhYCtAsUZvL6I6W8c2wcbd+LIWSCHSTeSAAECngN4xxIDSK9f4B9t377Wd7H5Nt7/Xz8eAgwAvesLRjYYPuUAAAAASUVORK5CYII=)](https://xscode.com/akshay2211/piximagepicker)\n \n## Demo\n![](media/two.gif)\n\n## Usage\nset configuration as\n```kotlin\n    val options = Options().apply{\n        ratio = Ratio.RATIO_AUTO                                    //Image/video capture ratio\n        count = 1                                                   //Number of images to restrict selection count\n        spanCount = 4                                               //Number for columns in grid\n        path = \"Pix/Camera\"                                         //Custom Path For media Storage\n        isFrontFacing = false                                       //Front Facing camera on start\n        videoDurationLimitInSeconds = 10                            //Duration for video recording\n        mode = Mode.All                                             //Option to select only pictures or videos or both\n        flash = Flash.Auto                                          //Option to select flash type\n        preSelectedUrls = ArrayList\u003cUri\u003e()                          //Pre selected Image Urls\n        videoOptions : VideoOptions                                 //Video configurations\n    }\n\n```\nRatio can be\n```kotlin\n  RATIO_4_3, RATIO_16_9, RATIO_AUTO\n```\nMode to to select the media type can be as\n```kotlin\n  All, Picture, Video\n```\nThen pass this config to the pix fragment either via\n```kotlin\n     addPixToActivity(R.id.container, options) {\n          when (it.status) {\n              PixEventCallback.Status.SUCCESS -\u003e //use results as it.data\n              PixEventCallback.Status.BACK_PRESSED -\u003e // back pressed called\n          }\n      }\n```\nor plain fragment can be retrieved via\n```kotlin\nprivate val pixFragment = pixFragment(options)\n```\nThe results can be retrieved via the constructor callback from the fragment\n```kotlin\n    pixFragment(options){\n        when (it.status) {\n            PixEventCallback.Status.SUCCESS -\u003e //use results as it.data\n            PixEventCallback.Status.BACK_PRESSED -\u003e // back pressed called\n        }\n    }\n```\nOr can be retrieved by anywhere in the Application from the state flow eventbus\n```kotlin\n    PixBus.results {\n        when (it.status) {\n             PixEventCallback.Status.SUCCESS -\u003e  //use results as it.data\n             PixEventCallback.Status.BACK_PRESSED -\u003e // back pressed called\n        }\n    }\n```\nFor detailed usage kindly refer to the below samples\n - [FragmentSample](app/src/main/java/io/ak1/pixsample/samples/FragmentSample.kt) for Plain Fragment implementation\n - [NavControllerSample](app/src/main/java/io/ak1/pixsample/samples/NavControllerSample.kt) for Fragments with NavController implementation\n - [ViewPager2Sample](app/src/main/java/io/ak1/pixsample/samples/ViewPager2Sample.kt) for Fragments with ViewPager2 implementation\n\n## Customise\n### Theme\ninclude these items in colors.xml with custom color codes\n```xml\n\u003cresources\u003e\n    \u003ccolor name=\"video_counter_color_pix\"\u003e#E53935\u003c/color\u003e\n    \u003ccolor name=\"primary_color_pix\"\u003e#075e54\u003c/color\u003e\n    \u003ccolor name=\"primary_light_color_pix\"\u003e#80075e54\u003c/color\u003e\n    \u003ccolor name=\"surface_color_pix\"\u003e#ffffff\u003c/color\u003e\n    \u003ccolor name=\"text_color_pix\"\u003e#807f7f\u003c/color\u003e\n\u003c/resources\u003e\n```\n\n## Thanks to\n  - [Glide]\n  - [FastScroll]\n  - [Header-decor]\n  - [CameraX]\n  - [Coroutines]\n\n## Backers\nBecome a backer and help us sustain our activities! 🙏🙏\n\u003ca href=\"https://opencollective.com/piximagepicker#backers\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/piximagepicker/backers.svg?width=890\"\u003e\u003c/a\u003e\n\n## Download\n[Download](https://search.maven.org/artifact/io.ak1.pix/piximagepicker) or grab via Gradle:\n \ninclude in app level build.gradle\n ```groovy\n repositories {\n    mavenCentral()\n }\n ```\n```groovy\n implementation  'io.ak1.pix:piximagepicker:1.6.5'\n```\nor Maven:\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.ak1.pix\u003c/groupId\u003e\n  \u003cartifactId\u003epiximagepicker\u003c/artifactId\u003e\n  \u003cversion\u003e1.6.5\u003c/version\u003e\n  \u003ctype\u003epom\u003c/type\u003e\n\u003c/dependency\u003e\n```\nor ivy:\n```xml\n\u003cdependency org='io.ak1.pix' name='piximagepicker' rev='1.6.5'\u003e\n  \u003cartifact name='pix' ext='pom' \u003e\u003c/artifact\u003e\n\u003c/dependency\u003e\n```\n\n#### Find docs for old versions in [wiki](https://github.com/akshay2211/PixImagePicker/wiki) for 1.5.6 and 1.2.5\n#### Also you can find the source for version 1.5.6 [here](https://github.com/akshay2211/PixImagePicker/tree/activity_branch).\n\n## WIP for KMP migration.\n\n## License\nLicensed under the Apache License, Version 2.0, [click here for the full license](/LICENSE).\n\n## Author \u0026 support\nThis project was created by [Akshay Sharma](https://akshay2211.github.io/).\n\n\u003e If you appreciate my work, consider buying me a cup of :coffee: to keep me recharged :metal: by [PayPal](https://www.paypal.me/akshay2211)\n\n\u003e I love using my work and I'm available for contract work. Freelancing helps to maintain and keep [my open source projects](https://github.com/akshay2211/) up to date!\n\n[Glide]: \u003chttps://github.com/bumptech/glide\u003e\n[FastScroll]: \u003chttps://github.com/L4Digital/FastScroll\u003e\n[Header-decor]: \u003chttps://github.com/edubarr/header-decor\u003e\n[CameraX]: \u003chttps://developer.android.com/training/camerax\u003e\n[Coroutines]: \u003chttps://developer.android.com/kotlin/coroutines\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakshay2211%2FPixImagePicker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakshay2211%2FPixImagePicker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakshay2211%2FPixImagePicker/lists"}