{"id":15028165,"url":"https://github.com/yangpeixing/yimagepicker","last_synced_at":"2025-05-16T18:03:30.487Z","repository":{"id":44895102,"uuid":"128701609","full_name":"yangpeixing/YImagePicker","owner":"yangpeixing","description":"小红书多图剪裁+微信图片选择器+大图预览+图片剪裁(支持圆形剪裁和镂空剪裁)，已适配androidQ,借鉴并升级matisse加载内核!超强定制性可轻松实现知乎/马蜂窝/微博等特殊样式!支持跨进程回调!内部结构轻量级，无任何第三方开源库！支持support依赖！","archived":false,"fork":false,"pushed_at":"2020-05-28T03:24:12.000Z","size":31983,"stargazers_count":1196,"open_issues_count":67,"forks_count":181,"subscribers_count":38,"default_branch":"master","last_synced_at":"2025-04-03T17:11:59.564Z","etag":null,"topics":["android-image-selector","gallery","imagepicker","imageselector","photo-gallery","picture-selector","redbook","redbook-imagepicker"],"latest_commit_sha":null,"homepage":"","language":"Java","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/yangpeixing.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-09T02:09:19.000Z","updated_at":"2025-03-28T08:38:50.000Z","dependencies_parsed_at":"2022-08-12T11:40:23.550Z","dependency_job_id":null,"html_url":"https://github.com/yangpeixing/YImagePicker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yangpeixing%2FYImagePicker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yangpeixing%2FYImagePicker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yangpeixing%2FYImagePicker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yangpeixing%2FYImagePicker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yangpeixing","download_url":"https://codeload.github.com/yangpeixing/YImagePicker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248597831,"owners_count":21130958,"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-image-selector","gallery","imagepicker","imageselector","photo-gallery","picture-selector","redbook","redbook-imagepicker"],"created_at":"2024-09-24T20:07:43.870Z","updated_at":"2025-04-12T16:38:35.687Z","avatar_url":"https://github.com/yangpeixing.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"### 关于YImagePicker \n[点击查看2.x版本readme](https://github.com/yangpeixing/YImagePicker/blob/master/README_2_x.md)\n\n本文档更新于:2020/4/15 上午10点36分\n\n[ ![Download](https://api.bintray.com/packages/yangpeixing/yimagepicker/androidx/images/download.svg?version=3.1.4) ](https://bintray.com/yangpeixing/yimagepicker/androidx/3.1.4/link)\n\n - 支持小红书多图剪裁、微信多图选择、单图剪裁、多图批量剪裁、大图预览\n - 支持自定义所有UI，包括标题栏、底部栏、列表item、文件夹item、剪裁页面、预览页面等\n - 支持13种视频图片格式混合加载，支持过滤掉指定格式文件\n - 支持大图预览，支持超长图、超大图，拒绝too lagre(已修复单图剪裁长图)\n - 支持自定义剪裁比例、剪裁边距、圆形剪裁、镂空/充满剪裁（仿最新微信图片头像选择）\n - 支持视频多选和预览\n - 支持只选择图片或者视频类型\n - 支持恢复上一次选中的图片状态（微信样式）\n - 支持屏蔽指定媒体文件（微信样式）\n - 选择结果直接回调，拒绝配置ActivityForResult+requestCode，即调用即处理\n - 支持选择器调用失败回调\n - 支持自定义回调类型\n - 支持直接回调媒体相册列表及文件列表\n - 支持选择器所有文案修改、国际化定制\n - 支持多种特殊需求覆盖，支持自定义选择器拦截事件\n - 已全面适配androidQ\n - 支持直接拍摄视频、照片等\n - 轻量级，aar大小不超过300K，无so库，无任何第三方依赖\n - 支持androidx和support\n - 永久维护\n\n\n\n\n### 引入依赖\n**androidx版本：**\n\n```java\nimplementation 'com.ypx.yimagepicker:androidx:3.1.4'\n```\n**support版本：后期可能不再维护，请使用者尽早切换androidx** （support依赖最高兼容28）\n```java\nimplementation 'com.ypx.yimagepicker:support:3.1.4.1'\n```\n\n### 核心原理\nYImagePicker与主项目通过IPickerPresenter进行交互与解耦，presenter采用序列化接口的方式实现。使用者需要自行实现presenter的方法。选择器回调采用嵌入fragment的方式实现，类似于Glide或RxPermisson.原理上还是使用OnActivityResult,但无需再配置requestCode并且支持跨进程回调。\n\n调用选择器之前必须实现 [IPickerPresenter](https://github.com/yangpeixing/YImagePicker/wiki/Documentation_3.x#自定义IPickerPresenter)  接口\n\n[选择器问题解答汇总](https://github.com/yangpeixing/YImagePicker/wiki/questions)\n\n[点击查看3.x详细API文档](https://github.com/yangpeixing/YImagePicker/wiki/Documentation_3.x)\n\n[apk体验地址 - 密码：123456](https://www.pgyer.com/imagepicker) \n\n### 效果图集\n - **demo效果**\n \n![demo效果](https://imgconvert.csdnimg.cn/aHR0cHM6Ly93d3cucGd5ZXIuY29tL2ltYWdlL3ZpZXcvYXBwX3NjcmVlbnNob3RzL2Y5YWUxNmNiNWZmZWFjZGY4OWVmZDA2YzE5MTA4MWIxLTUyOA?x-oss-process=image/format,png)\n\n - **小红书样式**\n\n![小红书样式](https://www.pgyer.com/image/view/app_screenshots/5378234cde61dec8d3823ebbbfa0255a-528)\n![小红书样式](https://app-screenshot.pgyer.com/image/view/app_screenshots/87b43cb9ef8f40377bc3910b3ad3737b-528)\n![小红书样式](https://www.pgyer.com/image/view/app_screenshots/9f6ccada146068692fda0e30b7a5df18-528)\n\n - **微信样式**\n \n![微信样式](https://www.pgyer.com/image/view/app_screenshots/825b3d168d70ab4539aed61af6be7f36-528)\n![微信样式](https://app-screenshot.pgyer.com/image/view/app_screenshots/21145d344498c57954704bde3e0e7dfc-528)\n![微信样式](https://www.pgyer.com/image/view/app_screenshots/1ec0113d850e5ee9917172a447c2737f-528)\n\n - **自定义样式**\n \n![自定义样式](https://www.pgyer.com/image/view/app_screenshots/74e132b3b997df394a41f0c0b8622467-528)\n![自定义样式](https://app-screenshot.pgyer.com/image/view/app_screenshots/57a62bcc84844400878fdb343cf762e8-528) \n \n\n - **自定义比例剪裁**\n \n ![自定义比例剪裁](https://app-screenshot.pgyer.com/image/view/app_screenshots/15483adb087360ff49e831cb988adce1-528)\n ![自定义比例剪裁](https://app-screenshot.pgyer.com/image/view/app_screenshots/4cf64a6afb74b6457103bd04debb7e58-528)\n \n \n - **多图剪裁页面(仿aloha)**\n \n ![aloha](https://www.pgyer.com/image/view/app_screenshots/a35c837bd25612c9b04f097f99457d62-528)\n \n### 微信图片选择\n支持视频、GIF、长图选择，支持选择状态保存。调用前请按照demo实现IPickerPresenter接口 ，示例如下：\n[WeChatPresenter](https://github.com/yangpeixing/YImagePicker/blob/master/YPX_ImagePicker_androidx/app/src/main/java/com/ypx/imagepickerdemo/style/WeChatPresenter.java) \n\n```java\nImagePicker.withMulti(new WeChatPresenter())//指定presenter                                 \n        //设置选择的最大数 \n        .setMaxCount(9)  \n        //设置列数                                                  \n        .setColumnCount(4)      \n        //设置要加载的文件类型，可指定单一类型  \n        .mimeTypes(MimeType.ofAll()) \n        //设置需要过滤掉加载的文件类型 \n        .filterMimeTypes(MimeType.GIF)       \n        .showCamera(true)//显示拍照 \n        .setPreview(true)//开启预览                                                  \n        //大图预览时是否支持预览视频\n        .setPreviewVideo(true)  \n        //设置视频单选                                     \n        .setVideoSinglePick(true) \n        //设置图片和视频单一类型选择 \n        .setSinglePickImageOrVideoType(true) \n        //当单选或者视频单选时，点击item直接回调，无需点击完成按钮          \n        .setSinglePickWithAutoComplete(false)\n        //显示原图  \n        .setOriginal(true)  \n        //显示原图时默认原图选项开关  \n        .setDefaultOriginal(false)\n        //设置单选模式，当maxCount==1时，可执行单选（下次选中会取消上一次选中）\n        .setSelectMode(SelectMode.MODE_SINGLE)   \n        //设置视频可选取的最大时长,同时也是视频可录制的最大时长\n        .setMaxVideoDuration(1200000L)  \n        //设置视频可选取的最小时长                                  \n        .setMinVideoDuration(60000L) \n        //设置上一次操作的图片列表，下次选择时默认恢复上一次选择的状态 \n        .setLastImageList(null) \n        //设置需要屏蔽掉的图片列表，下次选择时已屏蔽的文件不可选择\n        .setShieldList(null)               \n        .pick(this, new OnImagePickCompleteListener() {  \n            @Override    \n            public void onImagePickComplete(ArrayList\u003cImageItem\u003e items) {          \n                //图片选择回调，主线程                  \n            }                \n        });                                                                                                                              \n```\n### 小红书图片选择\n高仿小红书图片剪裁框架，支持视频以及多图剪裁、支持视频预览，支持UI自定义，支持fragment样式侵入。调用前请按照demo实现IPickerPresenter接口 ，示例如下：\n[RedBookPresenter](https://github.com/yangpeixing/YImagePicker/blob/master/YPX_ImagePicker_androidx/app/src/main/java/com/ypx/imagepickerdemo/style/RedBookPresenter.java) \n```java\nImagePicker.withCrop(new RedBookPresenter())//设置presenter                \n        .setMaxCount(9)//设置选择数量                                          \n        .showCamera(true)//设置显示拍照                                        \n        .setColumnCount(4)//设置列数                                         \n        .mimeTypes(MimeType.ofImage())//设置需要加载的文件类型                      \n        .filterMimeTypes(MimeType.GIF)//设置需要过滤掉的文件类型                     \n        .assignGapState(false)//强制留白模式                                   \n        .setFirstImageItem(null)//设置上一次选中的图片                             \n        .setFirstImageItemSize(1,1)//设置上一次选中的图片地址                        \n        .setVideoSinglePick(true)//设置视频单选                                \n        .setMaxVideoDuration(1200000L)//设置可选区的最大视频时长                        \n        .setMinVideoDuration(60000L)//设置视频可选取的最小时长                       \n        .pick(this, new OnImagePickCompleteListener() {                  \n            @Override                                                    \n            public void onImagePickComplete(ArrayList\u003cImageItem\u003e items) {\n                //图片剪裁回调，主线程                                             \n                //注意：剪裁回调里的ImageItem中getCropUrl()才是剪裁过后的图片地址             \n            }                                                            \n        });                                                       \n```\n### 预览\n支持多图预览和自定义预览界面，支持加载大图，超长图和高清图，示例如下：\n```java\n//配置需要预览的所有图片列表,其中imageitem可替换为Uri或者String(绝对路径)\nArrayList\u003cImageItem\u003e allPreviewImageList = new ArrayList\u003c\u003e();\n\n//默认选中的图片索引\nint defaultPosition = 0;\n//开启预览\nImagePicker.preview(this, new WXImgPickerPresenter(), allPreviewImageList, defaultPosition, new OnImagePickCompleteListener() {\n        @Override\n        public void onImagePickComplete(ArrayList\u003cImageItem\u003e items) {\n            //图片编辑回调，主线程\n        }\n    });                                                           \n```\n\n### 拍照 3.1版本已变更\n支持直接打开摄像头拍照，3.1版本去除了原有的拍照保存路径,新增了isCopyInDCIM入参,代表是否将拍照的图片copy一份到外部DCIM目录中\n因为安卓Q禁止直接写入文件到系统DCIM文件下，所以拍照入参必须是私有目录路径.所以废弃掉原有的imagepath入参\n如果想让拍摄的照片写入外部存储中，则需要copy一份文件到DCIM目录中并刷新媒体库\n示例如下：\n```java\nString name=\"图片名称,不要加后缀\";//可为null\nboolean isCopyInDCIM=true;//copy一份保存到系统相册文件\nImagePicker.takePhoto(this,name,isCopyInDCIM, new OnImagePickCompleteListener() {\n        @Override\n        public void onImagePickComplete(ArrayList\u003cImageItem\u003e items) {\n            //拍照回调，主线程\n        }\n    });\n```\n\n### 拍摄视频 3.1版本已变更\n支持直接打开摄像头拍视频，3.1已变更,变更理由参考拍照 示例如下：\n```java\nString name=\"视频名称,不要加后缀\";//可为null\nlong maxDuration=10000l;//可录制的最大时常,单位毫秒ms\nboolean isCopyInDCIM=true;//copy一份保存到系统相册文件\nImagePicker.takeVideo(this,name,maxDuration, isCopyInDCIM,new OnImagePickCompleteListener() {\n        @Override\n        public void onImagePickComplete(ArrayList\u003cImageItem\u003e items) {\n            //视频回调，主线程\n        }\n    });\n```\n\n### 调用选择器并剪裁\n支持选择图片完调用剪裁，支持自定义比例剪裁，支持圆形剪裁，示例如下：\n ```java\nImagePicker.withMulti(new WeChatPresenter())\n            .mimeTypes(MimeType.ofImage())\n            .filterMimeTypes(MimeType.GIF)\n            //剪裁完成的图片是否保存在DCIM目录下\n            //true：存储在DCIM下 false：存储在 data/包名/files/imagePicker/ 目录下\n            .cropSaveInDCIM(false)\n             //设置剪裁比例\n            .setCropRatio(1,1)\n            //设置剪裁框间距，单位px\n            .cropRectMinMargin(50)\n             //是否圆形剪裁，圆形剪裁时，setCropRatio无效\n            .cropAsCircle()\n             //设置剪裁模式，留白或充满  CropConfig.STYLE_GAP 或 CropConfig.STYLE_FILL\n            .cropStyle(CropConfig.STYLE_FILL)\n             //设置留白模式下生成的图片背景色，支持透明背景\n            .cropGapBackgroundColor(Color.TRANSPARENT)\n            .crop(this, new OnImagePickCompleteListener() {\n                @Override\n                public void onImagePickComplete(ArrayList\u003cImageItem\u003e items) {\n                    //图片剪裁回调，主线程\n                }\n            });                                                   \n```\n\n### 拍照并剪裁\n支持直接打开摄像头拍照并剪裁，支持自定义比例剪裁和圆形剪裁，示例如下：\n```java\n//配置剪裁属性\nCropConfig cropConfig = new CropConfig();\n//设置上一次剪裁矩阵位置信息,用于恢复上一次剪裁,Info类型从imageitem或者cropimageview中取,可为null\ncropConfig.setCropRestoreInfo(new Info());\n //设置剪裁比例\ncropConfig.setCropRatio(1, 1);\n//设置剪裁框间距，单位px\ncropConfig.setCropRectMargin(100);\n//是否保存到DCIM目录下，false时会生成在 data/files/imagepicker/ 目录下\ncropConfig.saveInDCIM(false);\n//是否圆形剪裁，圆形剪裁时，setCropRatio无效\ncropConfig.setCircle(false);\n//设置剪裁模式，留白或充满  CropConfig.STYLE_GAP 或 CropConfig.STYLE_FILL\ncropConfig.setCropStyle(CropConfig.STYLE_GAP);\n//设置留白模式下生成的图片背景色，支持透明背景\ncropConfig.setCropGapBackgroundColor(Color.TRANSPARENT );\n//调用拍照\nImagePicker.takePhotoAndCrop(this, new WXImgPickerPresenter(), cropConfig, \n    new OnImagePickCompleteListener() {\n        @Override\n        public void onImagePickComplete(ArrayList\u003cImageItem\u003e items) {\n            //剪裁回调，主线程\n        }\n    });\n```\n\n### 直接剪裁\n支持直接跳转剪裁页面，示例如下：\n```java\nCropConfig cropConfig = new CropConfig();\n//设置上一次剪裁矩阵位置信息,用于恢复上一次剪裁,Info类型从imageitem或者cropimageview中取,可为null\ncropConfig.setCropRestoreInfo(new Info());\n //设置剪裁比例\ncropConfig.setCropRatio(1, 1);\n//设置剪裁框间距，单位px\ncropConfig.setCropRectMargin(100);\n//是否保存到DCIM目录下，false时会生成在 data/files/imagepicker/ 目录下\ncropConfig.saveInDCIM(false);\n//是否圆形剪裁，圆形剪裁时，setCropRatio无效\ncropConfig.setCircle(false);\n//设置剪裁模式，留白或充满  CropConfig.STYLE_GAP 或 CropConfig.STYLE_FILL\ncropConfig.setCropStyle(CropConfig.STYLE_GAP);\n//设置留白模式下生成的图片背景色，支持透明背景\ncropConfig.setCropGapBackgroundColor(Color.TRANSPARENT );\n//调用剪裁\nString needCropImageUrl=\"需要剪裁的图片路径\";\nImagePicker.crop(this, new WXImgPickerPresenter(), cropConfig, needCropImageUrl，\n    new OnImagePickCompleteListener() {\n        @Override\n        public void onImagePickComplete(ArrayList\u003cImageItem\u003e items) {\n            //剪裁回调，主线程\n        }\n    });\n```\n\n### 提供媒体数据——支持回调相册数据、所有媒体数据、指定相册内媒体数据\n#### 获取媒体相册数据\n```java\n//指定要回调的相册类型，可以指定13种图片视频文件格式混合\nSet\u003cMimeType\u003e mimeTypes = MimeType.ofAll();\nImagePicker.provideMediaSets(this, mimeTypes, new MediaSetsDataSource.MediaSetProvider() {\n    @Override\n    public void providerMediaSets(ArrayList\u003cImageSet\u003e imageSets) {\n        //相册列表回调，主线程\n    }\n});\n```\n#### 获取全部媒体文件\n```java\n//指定要回调的相册类型，可以指定13种图片视频文件格式混合\nSet\u003cMimeType\u003e mimeTypes = MimeType.ofAll();\nImagePicker.provideAllMediaItems(this, mimeTypes, new MediaItemsDataSource.MediaItemProvider() {\n        @Override\n        public void providerMediaItems(ArrayList\u003cImageItem\u003e imageItems, ImageSet allVideoSet) {\n            //全部媒体数据回调，主线程\n            //只有当mimeTypes既包含图片或者视频格式文件时，allVideoSet才有值\n        }\n    });\n```\n#### 获取指定相册内全部媒体文件\n```java\n//指定要回调的相册类型，可以指定13种图片视频文件格式混合\nSet\u003cMimeType\u003e mimeTypes = MimeType.ofAll();\n//指定相册，id不能为空\nImageSet imageSet = new ImageSet();\nImagePicker.provideMediaItemsFromSet(this, imageSet, mimeTypes, new MediaItemsDataSource.MediaItemProvider() {\n        @Override\n        public void providerMediaItems(ArrayList\u003cImageItem\u003e imageItems, ImageSet allVideoSet) {\n            //全部媒体数据回调，主线程\n            //只有当mimeTypes既包含图片或者视频格式文件时，allVideoSet才有值\n        }\n    });\n```\n#### 预加载获取指定相册内全部媒体文件\n```java\n//指定要回调的相册类型，可以指定13种图片视频文件格式混合\nSet\u003cMimeType\u003e mimeTypes = MimeType.ofAll();\n//指定相册，id不能为空\nImageSet imageSet = new ImageSet();\n//预加载个数\nint preloadSize = 40;\nImagePicker.provideMediaItemsFromSetWithPreload(this, imageSet, mimeTypes, preloadSize, \n    new MediaItemsDataSource.MediaItemPreloadProvider() {\n        @Override\n        public void providerMediaItems(ArrayList\u003cImageItem\u003e imageItems) {\n            //预加载回调，预先加载指定数目的媒体文件回调\n        }\n    },\n    new MediaItemsDataSource.MediaItemProvider() {\n        @Override\n        public void providerMediaItems(ArrayList\u003cImageItem\u003e imageItems, ImageSet allVideoSet) {\n            //所有媒体文件回调\n            }\n        });\n```\n\n### 使用前请务必阅读[选择器问题解答汇总](https://github.com/yangpeixing/YImagePicker/wiki/questions)以及 [3.x使用文档](https://github.com/yangpeixing/YImagePicker/wiki/Documentation_3.x)\n\n### 版本记录\n[查看详细版本记录](https://github.com/yangpeixing/YImagePicker/wiki/YImagePicker版本记录)\n\n#### 3.1.4版本 [2020.04.15]\n1. 修复3.1.3版本path取不到绝对路径问题\n2. 修复quicktime类型视频无法过滤的问题\n\n#### 3.1.3版本 [2020.04.09]\n1. 修复安卓10上全部视频文件夹缩略图不展示 \n2. 修复安卓10上部分手机上部分图片无法展示问题 \n3. 修复大图预览放大缩小卡顿问题 \n4. 彻底修复toolarge闪退 \n5. 优化了图片剪裁预览质量 \n6. 修复预览界面无法预览视频问题 \n7. 预览支持自定义预览item，可根据图片还是视频动态显示布局 \n8. presenter的interceptItemClick方法新增isClickCheckBox入参，代表拦截的对象是否是点击右上角checkbox \n9. 新增showCameraOnlyInAllMediaSet方法代表是否只在全部文件夹里才展示拍照item，其他文件夹不展示 \n10. imageitem新增displayName字段代表文件名称 \n11. 其他更多细节优化\n\n#### 3.1版本 [2020.02.24]\n1. [优化]isOriginalImage加入到imageitem里\n2. [变更]自定义文本统一,删除了PickerConstants类,presenter中无需对选择器文案进行修改,若需要修改文案,则直接复制imagepicker中string文件,另外demo已覆盖英文适配\n3. [优化]多图剪裁已加入demo(AlohaActivity)\n4. [bug修复]长图剪裁崩溃问题\n5. [bug修复]关闭屏幕旋转问题\n6. [新增]新增setDefaultOriginal用于设置此次打开选择器的默认原图开关\n7. [新增]单图剪裁支持保存状态,下次恢复\n8. [新增]录制视频添加最大时长配置\n9. [优化]完全兼容androudQ拍照问题\n10. [新增]UiPickerConfig新增主题色设置\n11. [优化]demo架构调整,使用者参考更清晰\n\n\n### 下个版本排期\n时间：暂定2020年5月中旬\n 1. [剪裁支持输出大小](https://github.com/yangpeixing/YImagePicker/issues/19)\n 2. [剪裁支持旋转（尽量)](https://github.com/yangpeixing/YImagePicker/issues/32)\n 3. [文件大小加载限制](https://github.com/yangpeixing/YImagePicker/issues/41)\n 4. 支持darkmode模式\n 5. 支持activity自定义跳转动画\n 6. 内置新版本微信样式，知乎样式等\n 7. 支持切换视频底层框架（吐槽：官方videoView太难用了~~/(ㄒoㄒ)/~~）\n 8. **等你来提**\n\n 永不TODO：\n 1. 不会支持图片压缩，请使用者自行使用luBan\n 2. 不会支持图片和视频高级编辑（滤镜、贴纸等）\n\n### 感谢\n- 本框架媒体库查询部分借鉴于知乎开源框架Matisee，并在其基础上拓展并延伸，让查询更富有定制性，在此对Matisee原作者表示感谢。\n\n- 本库来源于mars App,想要体验城市最新的吃喝玩乐，欢迎读者下载体验mars!\n\n- 感谢所有支持或star本项目的使用者，感谢所有给我提issue的朋友们 ！\n\n### 心声\n\n YImagePicker从当初的只支持微信图片选择器到支持小红书样式，再到各种自定义，可谓花费了我近一年多的时光，可能有人觉得这个项目很简单，但是从开源性的角度上来说，很多时候代码不是我们想怎么写就怎么写的。为了达成统一风格，本人也借鉴了不下于20多个图片选择库。但是随着业务的复杂和机型的多样，不得不一遍遍重构，其中带来了不少的问题，也学习到了很多。在我的计划中，本库3.0版本算是一次较大的更新，相比2.x有着更优异的稳定性和定制性。但这绝不是最优版本，随着越来越多的定制化需求，架构可能会面临一次又一次的更新。所以使用者在使用的过程中如果出现各种各样的问题，还请不要放弃本库，可以直接加我联系方式并反馈给我（喷我），如果有更好的建议，也可以给我提request，我们一起完善此框架。最后说一句，没有什么是完美的，但我会力所能及~\n\n\n- 作者：[calorYang](https://blog.csdn.net/qq_16674697)\n- 邮箱：313930500@qq.com\n- QQ号: 313930500 \n- 微信：calor0616 \n- 博客：[CSDN](https://blog.csdn.net/qq_16674697)\n\n\n**遇到问题别绕路，QQ微信直接呼~ 您的star就是我前进的动力~🌹**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyangpeixing%2Fyimagepicker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyangpeixing%2Fyimagepicker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyangpeixing%2Fyimagepicker/lists"}