帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:图像  CROP  
A simple image cropping library for Android.

  • 源代码名称:SimpleCropView
  • 源代码网址:http://www.github.com/IsseiAoki/SimpleCropView
  • SimpleCropView源代码文档
  • SimpleCropView源代码下载
  • Git URL:
    git://www.github.com/IsseiAoki/SimpleCropView.git
  • Git Clone代码到本地:
    git clone http://www.github.com/IsseiAoki/SimpleCropView
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/IsseiAoki/SimpleCropView
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • SimpleCropView

    build statusAndroid ArsenalAndroid Gems

    SimpleCropView是一个用于Android的图像裁剪库。
    它简化了裁剪图像的代码,并提供了一个易于定制的UI 。

    在API级别 10和上支持。

    demo

    目录

    下载

    build.gradle 文件中包含以下依赖项。 请使用最新版本。

    repositories {
     jcenter()
    }
    dependencies {
     compile 'com.isseiaoki:simplecropview:1.1.7'}

    示例

    图像裁剪

    AndroidManifest.xml 文件中添加权限。

    <uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    添加 com.isseiaoki.simplecropview.CropImageView 到布局XML文件。

    注意:通过保持宽高比来缩放图像以适应视图的大小。 将忽略 WRAP_CONTENT

    <com.isseiaoki.simplecropview.CropImageView
     xmlns:custom="http://schemas.android.com/apk/res-auto"android:id="@+id/cropImageView"android:layout_weight="1"android:paddingTop="16dp"android:paddingBottom="16dp"android:paddingLeft="16dp"android:paddingRight="16dp"android:layout_width="match_parent"android:layout_height="wrap_content"custom:scv_crop_mode="fit_image"custom:scv_background_color="@color/windowBackground"custom:scv_handle_color="@color/colorAccent"custom:scv_guide_color="@color/colorAccent"custom:scv_overlay_color="@color/overlay"custom:scv_frame_color="@color/colorAccent"custom:scv_handle_size="14dp"custom:scv_touch_padding="8dp"custom:scv_handle_show_mode="show_always"custom:scv_guide_show_mode="show_always"custom:scv_min_frame_size="50dp"custom:scv_frame_stroke_weight="1dp"custom:scv_guide_stroke_weight="1dp"/>

    加载程序加载图像。

    mCropView = (CropImageView) findViewById(R.id.cropImageView);
    mCropView.load(sourceUri).execute(mLoadCallback);

    用 RxJava

    mCropView.load(sourceUri).executeAsCompletable();

    裁剪图像并在saveUri中保存裁剪位图。

    mCropView.crop(sourceUri)
    . execute(newCropCallback() {
     @OverridepublicvoidonSuccess(Bitmapcropped) {
     mCropView.save(cropped)
    . execute(saveUri, mSaveCallback);
     }
     @OverridepublicvoidonError(Throwablee) {
     }
    });

    用 RxJava

    mCropView.crop(sourceUri)
    . executeAsSingle()
    . flatMap(new Function<Bitmap, SingleSource<Uri>>() {
     @Override public SingleSource<Uri> apply(@io.reactivex.annotations.NonNull Bitmap bitmap)
     throws Exception {
     return mCropView.save(bitmap)
    . executeAsSingle(saveUri);
     }
     })
    . subscribeOn(Schedulers.newThread())
    . observeOn(AndroidSchedulers.mainThread())
    . subscribe(new Consumer<Uri>() {
     @Override public void accept(@io.reactivex.annotations.NonNull Uri uri) throws Exception {
    //on success
     }
     }, new Consumer<Throwable>() {
     @Override public void accept(@io.reactivex.annotations.NonNull Throwable throwable)
     throws Exception {
    //on error
     }
     });

    三维图像旋转

    SimpleCropView支持旋转 90度。

    cropImageView.rotateImage(CropImageView.RotateDegrees.ROTATE_90D); // rotate clockwise by 90 degreescropImageView.rotateImage(CropImageView.RotateDegrees.ROTATE_M90D); // rotate counter-clockwise by 90 degrees

    这里项目的工作实现的,请参见示例项目

    加载图像

    • load(sourceUri).execute(mLoadCallback);

    用 RxJava

    • load(sourceUri).executeAsCompletable();

    这些方法从sourceUri有效地加载位图。 你不需要关心filePath和图像大小。 你也可以使用 Picasso 或者 Glide

    应用缩略图

    你可以使用模糊图像作为占位符。

    mCropView.load(result.getData())
    . useThumbnail(true)
    . execute(mLoadCallback);

    裁剪和保存图像

    mCropView.crop(sourceUri)
    . execute(newCropCallback() {
     @OverridepublicvoidonSuccess(Bitmapcropped) {
     mCropView.save(cropped)
    . execute(saveUri, mSaveCallback);
     }
     @OverridepublicvoidonError(Throwablee) {
     }
    });

    用 RxJava

    mCropView.crop(sourceUri)
    . executeAsSingle()
    . flatMap(new Function<Bitmap, SingleSource<Uri>>() {
     @Override public SingleSource<Uri> apply(@io.reactivex.annotations.NonNull Bitmap bitmap)
     throws Exception {
     return mCropView.save(bitmap)
    . executeAsSingle(saveUri);
     }
     })
    . subscribeOn(Schedulers.newThread())
    . observeOn(AndroidSchedulers.mainThread())
    . subscribe(new Consumer<Uri>() {
     @Override public void accept(@io.reactivex.annotations.NonNull Uri uri) throws Exception {
    //on success
     }
     }, new Consumer<Throwable>() {
     @Override public void accept(@io.reactivex.annotations.NonNull Throwable throwable)
     throws Exception {
    //on error
     }
     });

    这些裁剪方法使用来自 sourceUri的全尺寸位图进行裁剪。 如果 sourceUri 为空,则使用 load(Uri) 中的Uri集。 裁剪后,将裁剪图像保存到 saveUri 中。

    压缩格式

    你可以使用 3压缩格式,PNG ( 默认值),JPEGWEBP

    setCompressFormat(Bitmap.CompressFormat.JPEG);

    压缩质量

    你还可以设置压缩质量。 0 ~ 100 ( 默认)

    setCompressQuality(90);

    文档级自定义项

    最大输出大小

    你可以设置输出图像的最大大小。 输出图像将在给定矩形内缩放。

    setOutputMaxSize(300, 300);

    固定输出大小

    你还可以设置固定输出宽度/高度。

    setOutputWidth(100); // If cropped image size is 400x200, output size is 100x50
    setOutputHeight(100); // If cropped image size is 400x200, output size is 200x100

    CropMode

    图像裁剪框架纵横比的选择。

    CropImageView cropImageView = (CropImageView)findViewById(R.id.cropImageView);
    cropImageView.setCropMode(CropImageView.CropMode.RATIO_16_9);
    FIT_IMAGE, RATIO_4_3, RATIO_3_4, SQUARE(default), RATIO_16_9, RATIO_9_16, FREE, CUSTOM, CIRCLE, CIRCLE_SQUARE
    Rect

    FREE: 非固定纵横比模式RATIO_X_YSQUARE: 固定纵横比模式FIT_IMAGE: 固定纵横比模式。 原始照片相同的纵横比。

    如果需要其他纵横比,请使用 setCustomRatio(int ratioX, int ratioY);

    demo

    圆裁剪

    CIRCLE: 固定纵横比模式。 裁剪图像为圆形。CIRCLE_SQUARE: 固定纵横比模式。 显示指南圆,但保存为正方形( getRectBitmap() 已经删除。)

    MinimumFrameSize

    dp中图像裁剪帧的最小大小( 默认值:50 )

    CropImageView cropImageView = (CropImageView)findViewById(R.id.cropImageView);
    cropImageView.setMinFrameSizeInDp(100);

    demo

    InitialFrameScale

    图像裁剪框架的初始帧大小。 0.01 ~ 1.0 ( 默认)

    CropImageView cropImageView = (CropImageView)findViewById(R.id.cropImageView);
    cropImageView.setInitialFrameScale(1.0f);
    缩放外观
    0.5
    0.75
    1.0 ( 默认值)

    保存和恢复 FrameRect

    可以按如下方式保存和还原框架 rect 。 有关更详细的信息,请参见示例项目

    • 保存 FrameRect
    mCropView.getActualCropRect()
    • 还原 FrameRect
    mCropView.load(result.getData())
    . initialFrameRect(mFrameRect)
    . execute(mLoadCallback);

    颜色

    CropImageView cropImageView = (CropImageView)findViewById(R.id.cropImageView);
    cropImageView.setBackgroundColor(0xFFFFFFFB);
    cropImageView.setOverlayColor(0xAA1C1C1C);
    cropImageView.setFrameColor(getResources().getColor(R.color.frame));
    cropImageView.setHandleColor(getResources().getColor(R.color.handle));
    cropImageView.setGuideColor(getResources().getColor(R.color.guide));

    笔画粗细和手柄大小

    CropImageView cropImageView = (CropImageView)findViewById(R.id.cropImageView);
    cropImageView.setFrameStrokeWeightInDp(1);
    cropImageView.setGuideStrokeWeightInDp(1);
    cropImageView.setHandleSizeInDp(getResources().getDimension(R.dimen.handle_size));

    处理触摸填充

    图像裁剪帧句柄的附加触控区域。

    CropImageView cropImageView = (CropImageView)findViewById(R.id.cropImageView);
    cropImageView.setTouchPadding(16);

    处理器和指南 ShowMode

    CropImageView cropImageView = (CropImageView)findViewById(R.id.cropImageView);
    cropImageView.setHandleShowMode(CropImageView.ShowMode.SHOW_ALWAYS);
    cropImageView.setGuideShowMode(CropImageView.ShowMode.SHOW_ON_TOUCH);
    SHOW_ALWAYS(default), NOT_SHOW, SHOW_ON_TOUCH
    处理ShowMode指南ShowMode外观
    SHOW_ALWAYSSHOW_ALWAYS
    NOT_SHOWNOT_SHOW
    SHOW_ALWAYSNOT_SHOW
    SHOW_ALWAYSSHOW_ON_TOUCH
    SHOW_ON_TOUCHNOT_SHOW

    动画

    SimpleCropView支持旋转动画和帧更改动画。

    已经启用

    切换动画是否动画。true 默认。

    setAnimationEnabled(true);
    持续时间

    以毫秒为单位设置动画持续时间。 100 默认值。

    setAnimationDuration(200);
    插补器

    设置动画的插值器。DecelerateInterpolator 为默认值。 你还可以使用自定义内插器。

    setInterpolator(newAccelerateDecelerateInterpolator());

    毕加索和下滑兼容性

    com.isseiaoki.simplecropview.CropImageView 是一种 ImageView 。 你可以使用它与毕加索或者滑动如下:

    CropImageView cropImageView = (CropImageView)findViewById(R.id.cropImageView);Picasso.with(context).load(imageUrl).into(cropImageView);

    或者

    CropImageView cropImageView = (CropImageView)findViewById(R.id.cropImageView);Glide.with(context).load(imageUrl).into(cropImageView);

    某些选项无法正确工作,因为CropImageView不支持 ImageView.ScaleType 。

    命令行调试

    你可以使用调试显示。

    setDebug(true);

    XML属性

    XML示例这里。

    <com.isseiaoki.simplecropview.CropImageView
     xmlns:custom="http://schemas.android.com/apk/res-auto"android:id="@+id/cropImageView"android:layout_weight="1"android:paddingTop="16dp"android:paddingBottom="16dp"android:paddingLeft="16dp"android:paddingRight="16dp"android:layout_width="match_parent"android:layout_height="wrap_content"custom:scv_img_src="@drawable/sample5"custom:scv_crop_mode="fit_image"custom:scv_background_color="@color/windowBackground"custom:scv_overlay_color="@color/overlay"custom:scv_frame_color="@color/colorAccent"custom:scv_handle_color="@color/colorAccent"custom:scv_guide_color="@color/colorAccent"custom:scv_guide_show_mode="show_always"custom:scv_handle_show_mode="show_always"custom:scv_handle_size="14dp"custom:scv_touch_padding="8dp"custom:scv_min_frame_size="50dp"custom:scv_frame_stroke_weight="1dp"custom:scv_guide_stroke_weight="1dp"custom:scv_crop_enabled="true"custom:scv_initial_frame_scale="1.0"custom:scv_animation_enabled="true"custom:scv_animation_duration="200"custom:scv_handle_shadow_enabled="true"/>
    xml 属性
    ( 自定义:) 相关的方法描述
    scv_img_srcsetImageResource ( int )设置源图像。
    scv_crop_modesetCropMode ( CropImageView 。cropmode模式)设置裁剪模式。
    scv_background_colorsetBackgroundColor ( int )设置视图背景颜色。
    scv_overlay_colorsetOverlayColor ( int overlayColor )设置图像覆盖颜色。
    scv_frame_colorsetFrameColor ( int frameColor )设置图像裁剪帧颜色。
    scv_handle_colorsetHandleColor ( int frameColor )设置处理颜色。
    scv_guide_colorsetGuideColor ( int frameColor )设置指南颜色。
    scv_guide_show_modesetGuideShowMode ( CropImageView 。showmode模式)设置准则显示模式。
    scv_handle_show_modesetHandleShowMode ( CropImageView 。showmode模式)设置句柄显示模式。
    scv_handle_sizesetHandleSizeInDp ( int handleDp )在密度独立像素中设置手柄半径。
    scv_touch_paddingsetTouchPaddingInDp ( int paddingDp )设置图像裁剪帧句柄在密度独立像素中触摸填充( 触摸区域) 。
    scv_min_frame_sizesetMinFrameSizeInDp ( int minDp )将图像裁剪帧最小大小设置为独立像素。
    scv_frame_stroke_weightsetFrameStrokeWeightInDp ( int weightDp )将帧笔划粗细设置为独立像素。
    scv_guide_stroke_weightsetGuideStrokeWeightInDp ( int weightDp )在密度独立像素中设定准则笔划权重。
    scv_crop_enabledsetCropEnabled ( 启用布尔值)设置是否显示图像裁剪框架。
    scv_initial_frame_scalesetInitialFrameScale ( 浮点 initialScale )设置帧的初始比例。( 0.01 ~ 1.0 )
    scv_animation_enabledsetAnimationEnabled ( 启用布尔值)设置是否设置动画。
    scv_animation_durationsetAnimationDuration ( int durationMillis )设置动画持续时间。
    scv_handle_shadow_enabledsetHandleShadowEnabled ( 布尔 handleShadowEnabled )设置是否显示手柄阴影。

    Issei Aoki i.greenwood.dev@gmail.com

    用户

    如果你正在使用我的库,请让我知道你的应用程序名称: )

    用于Xamarin的

    https://bitbucket.org/markjackmilian/xam.droid.simplecropview

    非常感谢 Marco !

    许可证

    The MIT License (MIT)
    Copyright (c) 2015 Issei Aoki
    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the"Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.


    文章标签:图像  CROP  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语