用开源项目cropper实现对图片中任意部分进行裁剪
生活随笔
收集整理的這篇文章主要介紹了
用开源项目cropper实现对图片中任意部分进行裁剪
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?紅色區(qū)域?yàn)榻貓D控件的區(qū)域。 ??
開源項(xiàng)目地址:https://github.com/edmodo/cropper
croper這個開源項(xiàng)目可以對一個圖片進(jìn)行任意區(qū)域的街區(qū),并且可以設(shè)置圖片的旋轉(zhuǎn)角度。但它忽視了小圖片的存在,如果要截圖的圖片過于小,那么顯示效果是極其不好的。于是我寫了個圖片拉伸的方法來解決這個問題,當(dāng)然也可以再它的源碼中進(jìn)行修改。我嘗試過在源碼中修改,但發(fā)現(xiàn)它多方法都是針對的大圖來做的,修改起來十分困難。所以姑且偷懶先把小圖片拉伸后在進(jìn)行顯示。
使用的步驟很簡單:
1.在布局文件定義這個控件
2.在代碼中找到他,并進(jìn)行下設(shè)置(可選)
3.使用截圖的方法
?
布局文件(里面的imageview用于顯示截取好的圖片,button是用來截圖的按鈕)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="${relativePackage}.${activityClass}" ><com.edmodo.cropper.CropImageViewxmlns:custom="http://schemas.android.com/apk/res-auto"android:id="@+id/CropImageView"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_above="@+id/imageView"android:layout_centerHorizontal="true"android:background="#ff0000"/><ImageViewandroid:id="@+id/imageView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_above="@+id/button1"android:layout_centerHorizontal="true"android:src="@drawable/abc_ab_bottom_solid_dark_holo" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:text="裁剪" /></RelativeLayout>?
MainActivity
package com.kale.croppertest;import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.widget.Button; import android.widget.ImageView;import com.edmodo.cropper.CropImageView;public class MainActivity extends Activity {CropImageView cImageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);cImageView = (CropImageView) findViewById(R.id.CropImageView);cImageView.setImageBitmap(getBitmap(R.drawable.right));//為了兼容小圖片,必須在代碼中加載圖片cImageView.rotateImage(30);//設(shè)定圖片的旋轉(zhuǎn)角度cImageView.setFixedAspectRatio(true);//設(shè)置允許按比例截圖,如果不設(shè)置就是默認(rèn)的任意大小截圖cImageView.setAspectRatio(1, 1);//設(shè)置比例為一比一cImageView.setGuidelines(CropImageView.ON);//設(shè)置顯示網(wǎng)格的時機(jī),默認(rèn)為on_touch Button btn = (Button)findViewById(R.id.button1);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO 自動生成的方法存根Bitmap bitmap = cImageView.getCroppedImage();//得到裁剪好的圖片ImageView croppedImageView = (ImageView) findViewById(R.id.imageView);croppedImageView.setImageBitmap(bitmap);//設(shè)置到imageview中 }});}/*** @param resId* @return 如果圖片太小,那么就拉伸*/public Bitmap getBitmap(int resId) {WindowManager wm = (WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE);int width = wm.getDefaultDisplay().getWidth();Bitmap bitmap=BitmapFactory.decodeResource(getResources(), resId);float scaleWidth = 1,scaleHeight = 1;if(bitmap.getWidth() < width) {scaleWidth = width / bitmap.getWidth();scaleHeight = scaleWidth;}Matrix matrix = new Matrix();matrix.postScale(scaleWidth, scaleHeight);bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),bitmap.getHeight(), matrix, true);return bitmap;}}?
源碼下載:http://download.csdn.net/detail/shark0017/7732283
?
總結(jié)
以上是生活随笔為你收集整理的用开源项目cropper实现对图片中任意部分进行裁剪的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android LinearLayout
- 下一篇: 博文视点答题1