{"adoption": {"forks": 183, "observed_at": "2026-08-28T04:03:58.072257+00:00", "stars": 1200}, "canonical_url": "https://ross.abutalabs.com/products/yimagepicker", "card": {"archived": false, "artifact_type": "library", "description": "小红书多图剪裁+微信图片选择器+大图预览+图片剪裁(支持圆形剪裁和镂空剪裁)，已适配androidQ,借鉴并升级matisse加载内核!超强定制性可轻松实现知乎/马蜂窝/微博等特殊样式!支持跨进程回调!内部结构轻量级，无任何第三方开源库！支持support依赖！", "domain": ["android-tools", "mobile-development", "media", "photography"], "enriched": true, "function": ["image-processing", "ui-components", "mobile-framework"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["yangpeixing/YImagePicker"], "name": "yangpeixing/YImagePicker", "platform": ["jvm"], "pushed_at": "2020-05-28T03:24:12+00:00", "repo": "yangpeixing/YImagePicker", "stars": 1200, "tags": ["image-picker", "photo-gallery", "image-crop", "wechat-style", "xiaohongshu-style", "androidx", "media-selection", "photo-preview", "android", "mobile"], "topics": ["imagepicker", "redbook", "redbook-imagepicker", "photo-gallery", "gallery", "android-image-selector", "picture-selector", "imageselector"], "urls": [], "use_cases": ["pick multiple photos from gallery in an Android app", "crop profile pictures in a circle like WeChat avatar selection", "crop multiple images at once like Xiaohongshu", "preview very large or long images without OOM errors", "select videos and images together with format filtering", "customize the picker UI to match Zhihu or Weibo styles", "get picker results via callback without ActivityResult requestCode boilerplate"], "what_it_is": "A lightweight Android image/video picker library written in Java with no third-party dependencies. It supports WeChat-style multi-image selection, Xiaohongshu-style multi-image cropping, large image preview, and circular or hollow cropping, with extensive UI customization.", "when_to_avoid": ["building for iOS or cross-platform frameworks like Flutter or React Native", "you need a maintained library - the latest release is from 2020 and support variants are deprecated", "you need a picker in Kotlin with modern ActivityResult APIs", "your project requires Jetpack Compose integration"], "when_to_choose": ["building a native Android app that needs a highly customizable image/video picker", "you need WeChat or Xiaohongshu style selection and cropping out of the box", "you want a dependency-free, small (under 300K) picker library", "you need to support both androidx and legacy support libraries"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/yimagepicker", "repo": "yangpeixing/YImagePicker", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.072257+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:20:51.549780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c87cef5b5aa5be4ed1901f3cfd6842dc884cdde72e19e44dcf6e1e4298a546a", "fetched_at": "2026-08-28T04:03:58.072257+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangpeixing/YImagePicker"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.072257+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:20:51.549780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c87cef5b5aa5be4ed1901f3cfd6842dc884cdde72e19e44dcf6e1e4298a546a", "fetched_at": "2026-08-28T04:03:58.072257+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangpeixing/YImagePicker"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:20:51.549780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c87cef5b5aa5be4ed1901f3cfd6842dc884cdde72e19e44dcf6e1e4298a546a", "fetched_at": "2026-08-28T04:03:58.072257+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangpeixing/YImagePicker"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.072257+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.072257+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.072257+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:20:51.549780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c87cef5b5aa5be4ed1901f3cfd6842dc884cdde72e19e44dcf6e1e4298a546a", "fetched_at": "2026-08-28T04:03:58.072257+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangpeixing/YImagePicker"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.072257+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.072257+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:20:51.549780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c87cef5b5aa5be4ed1901f3cfd6842dc884cdde72e19e44dcf6e1e4298a546a", "fetched_at": "2026-08-28T04:03:58.072257+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangpeixing/YImagePicker"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.072257+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.072257+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.072257+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:20:51.549780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c87cef5b5aa5be4ed1901f3cfd6842dc884cdde72e19e44dcf6e1e4298a546a", "fetched_at": "2026-08-28T04:03:58.072257+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangpeixing/YImagePicker"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.072257+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.072257+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:20:51.549780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c87cef5b5aa5be4ed1901f3cfd6842dc884cdde72e19e44dcf6e1e4298a546a", "fetched_at": "2026-08-28T04:03:58.072257+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangpeixing/YImagePicker"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:20:51.549780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c87cef5b5aa5be4ed1901f3cfd6842dc884cdde72e19e44dcf6e1e4298a546a", "fetched_at": "2026-08-28T04:03:58.072257+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangpeixing/YImagePicker"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:20:51.549780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c87cef5b5aa5be4ed1901f3cfd6842dc884cdde72e19e44dcf6e1e4298a546a", "fetched_at": "2026-08-28T04:03:58.072257+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangpeixing/YImagePicker"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:20:51.549780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c87cef5b5aa5be4ed1901f3cfd6842dc884cdde72e19e44dcf6e1e4298a546a", "fetched_at": "2026-08-28T04:03:58.072257+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangpeixing/YImagePicker"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3069, "days_push": 2288, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}