All Projects → FinalTeam → Rxgalleryfinal

FinalTeam / Rxgalleryfinal

图片选择库,单选/多选、拍照、裁剪、压缩,自定义。包括视频选择和录制。

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Rxgalleryfinal

Imageviewer.swift
An easy to use Image Viewer that is inspired by Facebook
Stars: ✭ 1,071 (-61.72%)
Mutual labels:  image, photo, gallery
Ptshowcaseviewcontroller
An initial implementation of a "showcase" view( controller) for iOS apps... Visualizes images, videos and PDF files beautifully! (by @pittleorg) [meta: image, photo, video, document, pdf, album, gallery, showcase, gallery, iOS, iPhone, iPad, component, library, viewer]
Stars: ✭ 395 (-85.88%)
Mutual labels:  image, photo, gallery
Ptimagealbumviewcontroller
"Image Album" — or "Photo Album" if you like that better — View( Controller) for all crazy iOS developers out there...
Stars: ✭ 199 (-92.89%)
Mutual labels:  image, photo, gallery
Stfalconimageviewer
A simple and customizable Android full-screen image viewer with shared image transition support, "pinch to zoom" and "swipe to dismiss" gestures
Stars: ✭ 1,734 (-38.03%)
Mutual labels:  image, photo, gallery
Atgmediabrowser
Image slide-show viewer with multiple predefined transition styles, with ability to create new transitions with ease.
Stars: ✭ 186 (-93.35%)
Mutual labels:  image, photo
Ddperspectivetransform
🔲 Warp image transformation
Stars: ✭ 186 (-93.35%)
Mutual labels:  image, photo
Cropiwa
📐 Configurable Custom Crop widget for Android
Stars: ✭ 2,185 (-21.91%)
Mutual labels:  image, photo
Silentbox
A lightbox inspired Vue.js component.
Stars: ✭ 196 (-92.99%)
Mutual labels:  image, gallery
Croperino
📷 A simple image cropping tool that provides gallery or camera help for Native Android (Java)
Stars: ✭ 176 (-93.71%)
Mutual labels:  image, gallery
Video Thumbnail Generator
📷 Generate thumbnail sprites from videos.
Stars: ✭ 190 (-93.21%)
Mutual labels:  image, photo
Exiftool Vendored.js
Fast, cross-platform Node.js access to ExifTool
Stars: ✭ 200 (-92.85%)
Mutual labels:  image, photo
Lantern
基于Swift的高可用视图框架
Stars: ✭ 181 (-93.53%)
Mutual labels:  image, photo
Recent Images
Do you noticed the new feature of Telegram or Instagram?! They show your latest images when you try to attach or post a picture. So I developed this library the same with lots of customization. Simple way to get all images of device based on date taken, name, id and other customization
Stars: ✭ 182 (-93.5%)
Mutual labels:  image, gallery
Pixel
📷 A composable image editor using Core Image and Metal.
Stars: ✭ 2,495 (-10.83%)
Mutual labels:  image, photo
Hxphotopicker
图片/视频选择器 - 支持LivePhoto、GIF图片选择、3DTouch预览、在线下载iCloud上的资源、编辑图片/视频、浏览网络图片 功能 Imitation wx photo/image picker - support for LivePhoto, GIF image selection, 3DTouch preview, Download the resources on iCloud online, browse the web image function
Stars: ✭ 2,363 (-15.55%)
Mutual labels:  image, photo
Album
🍉 Album and Gallery for Android platform.
Stars: ✭ 2,430 (-13.15%)
Mutual labels:  image, gallery
Rskimagecropper
An image cropper / photo cropper for iOS like in the Contacts app with support for landscape orientation.
Stars: ✭ 2,371 (-15.26%)
Mutual labels:  image, photo
Photofilters
photofilters library for flutter
Stars: ✭ 229 (-91.82%)
Mutual labels:  image, photo
photos
"Fx Fotos" is an opensource gallery app in react native with the same smoothness and features of Google Photos and Apple Photos. It is backend gnostic and connects to decentralized backends like "box", "Dfinity", "Filecoin" and "Crust".
Stars: ✭ 620 (-77.84%)
Mutual labels:  gallery, photo
Imageviewer
A simple and customizable Android full-screen image viewer 一个简单且可自定义的Android全屏图像浏览器
Stars: ✭ 1,889 (-32.49%)
Mutual labels:  image, gallery

RxGalleryFinal

功能描述(JDK1.8)

RxGalleryFinal是一个android图片/视频文件选择器。其支持多选、单选、拍摄和裁剪,主题可自定义,无强制绑定第三方图片加载器。

版本描述

History Issues

History Version

待完善

1.视频选择器的回调
2.卡顿问题,可在 Issues 里搜索: #130 【精】觉得卡顿的点我

gradle

    New : compile 'cn.finalteam.rxgalleryfinal:library:1.1.3' -> 紧急修复bug .
    (Fix #191, add video)

参考:History Version

1.1.2 特性

  • 修复相关bug
  • Fix #175 #178

1.1.1 特性

  • 修复相关bug
  • #170,#165 ,#167 and fix Image No such file or directory
  • 更新Sample代码

1.0.9 特性

  • 修复相关bug - #160
  • 增加UCROP的设置
  • 更新Sample代码
  • RxJava升级

使用

下载或添加依赖

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.exifinterface:exifinterface:1.1.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.15'
implementation 'com.github.yalantis:ucrop:2.2.4'

//支持以下主流图片加载器,开发者自行选择
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.facebook.fresco:fresco:2.0.0'
implementation 'com.facebook.fresco:animated-gif:2.0.0'
implementation 'com.github.bumptech.glide:glide:4.10.0'
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

配置manifest

截图:

image

  • 提供了相关的Api

  • 请查看MainActivity的示例代码 查看 Sample 代码

         //自定义方法的使用
         onClickZDListener();
         //调用图片选择器Api
         onClickSelImgListener();
         //调用视频选择器Api
         onClickSelVDListener();
         //调用裁剪Api
         onClickImgCropListener();
     		//手动打开日志。
    	 	ModelUtils.setDebugModel(true);
    
  • 这里可以配置主题

image

Theme

配置Theme请查看sample下的 xml-> TestTheme..
  • Code

      //自定义方法的单选
      RxGalleryFinal
      .with(context)
      .image()
      .radio()
      .crop()
      .imageLoader(ImageLoaderType.GLIDE)
      .subscribe(new RxBusResultSubscriber<ImageRadioResultEvent>() {
          @Override
          protected void onEvent(ImageRadioResultEvent imageRadioResultEvent) throws Exception {
              //图片选择结果
              .....
          }
      })
      .openGallery();
    

	//自定义方法的多选
	RxGalleryFinal.with(MainActivity.this)
	.image()
	.multiple()
	.maxSize(8)
	.imageLoader(ImageLoaderType.UNIVERSAL)
	.subscribe(new RxBusResultSubscriber<ImageMultipleResultEvent>() {
	       @Override
	       protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception {
	          toast("已选择" + imageMultipleResultEvent.getResult().size() + "张图片");
	       }
	       @Override
	       public void onCompleted() {
	       super.onCompleted();
	           Toast.makeText(getBaseContext(), "OVER", Toast.LENGTH_SHORT).show();
	       }
	}).openGallery();

	 //得到图片多选的事件
	 RxGalleryListener.getInstance().setMultiImageCheckedListener(new IMultiImageCheckedListener() {
	       @Override
	       public void selectedImg(Object t, boolean isChecked) {
	            //这个主要点击或者按到就会触发,所以不建议在这里进行Toast
	       }
	       @Override
	       public void selectedImgMax(Object t, boolean isChecked, int maxSize) {
	           toast("你最多只能选择" + maxSize + "张图片");
	       }
	});

	 //注解诠释
	 RxGalleryFinal.with(context)
	      .image()//图片
	      .radio()//单选
	      .crop()//裁剪
	      .video()//视频
	      .imageLoader(ImageLoaderType.GLIDE)
	      //里面可以选择主流图片工具  PICASSO  GLIDE  FRESCO UNIVERSAL(ImageLoader)
	      .subscribe(rxBusResultSubscriber)
	      .openGallery();

    //调用裁剪.RxGalleryFinalApi.getModelPath()为默认的输出路径
    RxGalleryFinalApi.cropScannerForResult(MainActivity.this, RxGalleryFinalApi.getModelPath(), inputImg);

//获取和设置 保存路径
RxGalleryFinalApi.getImgSaveRxCropDirByFile();//得到裁剪路径
RxGalleryFinalApi.getImgSaveRxCropDirByStr();//得到裁剪路径
RxGalleryFinalApi.getImgSaveRxDirByFile();//得到图片路径
RxGalleryFinalApi.getImgSaveRxCropDirByStr();//得到图片路径

//获取和设置 保存路径
//…… setImgSaveXXXXX().
//图片自动会存储到下面,裁剪会自动生成路径;也可以手动设置裁剪的路径;
RxGalleryFinalApi.setImgSaveRxSDCard("dujinyang");

    //自定义裁剪
   rx.cropAspectRatioOptions(0, new AspectRatio("3:3",30, 10))
   .crop()
   .openGallery();

  //4.演示 单选裁剪 并且增加回掉 (裁剪必须在open之前)
  RxGalleryFinalApi.getInstance(this)
     .onCrop(true)//是否裁剪
     .openGalleryRadioImgDefault(new RxBusResultSubscriber() {
             @Override
             protected void onEvent(Object o) throws Exception {
                  Logger.i("只要选择图片就会触发");
             }
      })
     .onCropImageResult(new IRadioImageCheckedListener() {
             @Override
             public void cropAfter(Object t) {
                  Logger.i("裁剪完成");
             }

             @Override
             public boolean isActivityFinish() {
                  Logger.i("返回false不关闭,返回true则为关闭");
                  return true;
             }
     });
  • 添加权限

      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    
  • 注册activity

      <application
          ...
          android:theme="@style/Theme_Light">
      <activity
          android:name="cn.finalteam.rxgalleryfinal.ui.activity.MediaActivity"
          android:screenOrientation="portrait"
          android:exported="true"
          android:theme="@style/Theme_Light.Default"/>
      <activity
          android:name="com.yalantis.ucrop.UCropActivity"
          android:screenOrientation="portrait"
          android:theme="@style/Theme_Light.Default"/>
      </application
    

混淆配置

#1.support-v7-appcompat
-keep public class android.support.v7.widget.** { *; }
-keep public class android.support.v7.internal.widget.** { *; }
-keep public class android.support.v7.internal.view.menu.** { *; }

-keep public class * extends android.support.v4.view.ActionProvider {
    public <init>(android.content.Context);
}

#2.rx
-dontwarn io.reactivex.**
-keep io.reactivex.**
-keepclassmembers class io.reactivex.** { *; }

#3.retrolambda
-dontwarn java.lang.invoke.*

#4.support-v4
-keep class android.support.v4.** { *; }
-keep interface android.support.v4.** { *; }

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

#6.photoview
-keep class uk.co.senab.photoview** { *; }
-keep interface uk.co.senab.photoview** { *; }

#7.rxgalleryfinal
-keep class cn.finalteam.rxgalleryfinal.ui.widget** { *; }

-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class **.R$* {
    public static <fields>;
}

-keepattributes *Annotation*
-keepclasseswithmembernames class * {
    native <methods>;
}
-keepclassmembers public class * extends android.view.View {
   void set*(***);
   *** get*();
}

Q&A

  • 1、出现图片倒立问题,如何解决
  • 2、如何压缩图片
  • 3、Android 7.0闪退
  • 4、授权说明

联系

如果有紧急事件可联系作者或加Q群:
- Q群号: 218801658
- Q群号: 246231638

Wiki


有兴趣的可以关注【Python2048】 公众号
分享技术、灰色产业、职业规划、赚钱之道、逆向破解等趣事……

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].