600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > android 自定义比例裁剪图片(拍照 相册)方式 自定义比例

android 自定义比例裁剪图片(拍照 相册)方式 自定义比例

时间:2021-03-22 21:50:47

相关推荐

android 自定义比例裁剪图片(拍照 相册)方式 自定义比例

先说下我这个有啥好处 主要是能够自定义设置裁剪图片的比例.比如 :今天产品 给你说裁剪 成16:9 的图片. 你做好了 OK 明天 产品又和你说 裁剪成10:7 的图片 ,你是不是要吐血, 我这里只要设置一行代码就可以改变裁剪的比例.

OK 还是老规矩 先上效果图 看看啥样子

好了 不扯其他的了 我这里的比例是10: 7 的 ,来看下我的目录结构把

讲下大致原理 照相或者相册返回图片的地址 这个就不说了 得到地址.

创建一个自定义RelativeLayout ClipImageLayout 这个是裁剪视图 .里面有两个自定义view

1. ClipImageBorderView 绘制阴影截图视图 这个主要绘制了阴影还有边框 这个是界面

2.ClipZoomImageView 裁剪的缩放视图. 这个是实际裁剪的 实际裁剪在这里裁剪 创建bitmap 宽度是确定的 就是屏幕宽度

高度就是 屏幕高度减去 裁剪边框距离屏幕的高度除以2 代码里面有体现 注释.

1 我还集成了从相册选取和照相选取图片的地址 PhotoUtil 看代码把

使用方法自定义比例

贴一下主界面的代码

package com.example.clipphoto;import java.io.File;import java.io.IOException;import com.example.clipphoto.util.BitmapUtils;import com.example.clipphoto.util.LogUtils;import com.example.clipphoto.util.PhotoUtil;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.graphics.Bitmap;import .Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.view.View;import android.widget.ImageView;import android.widget.Toast;/*** 主界面* @author liuml**/public class MainActivity extends Activity {private PhotoUtil photoUtil;private ImageView iv_bg;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);iv_bg = (ImageView) findViewById(R.id.iv_bg);}public void show(View view) {photoUtil = new PhotoUtil(MainActivity.this);photoUtil.showDialog();}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);// 相册返回if (PhotoUtil.CAMRA_SETRESULT_CODE == requestCode) {if (resultCode == RESULT_OK) {// 相册选中图片路径String cameraPath = photoUtil.getCameraPath(data);Bitmap bitmap = photoUtil.readBitmapAutoSize(cameraPath);iv_bg.setImageBitmap(bitmap);String str = photoUtil.bitmaptoString(bitmap);LogUtils.d("相相册选中路径 = " + cameraPath);startClipActivity(cameraPath);}}// 相机返回else if (PhotoUtil.PHOTO_SETRESULT_CODE == requestCode) {if (resultCode == RESULT_OK) {String photoPath = photoUtil.getPhotoPath();Bitmap bitmap = photoUtil.readBitmapAutoSize(photoPath);String str = photoUtil.bitmaptoString(bitmap);iv_bg.setImageBitmap(bitmap);LogUtils.d("相机选中路径 = " + photoPath);startClipActivity(photoPath);}}// 裁剪返回else if (PhotoUtil.PHOTO_CORPRESULT_CODE == requestCode) {if (resultCode == RESULT_OK) {LogUtils.d("裁剪返回 = ");String path = data.getStringExtra("path");BitmapUtils bitmapUtils = new BitmapUtils(getApplicationContext());Bitmap bitmap = bitmapUtils.decodeFile(path);iv_bg.setImageBitmap(bitmap);}}}public void startClipActivity(String path) {Intent intent = new Intent(this, PhotoClipActivity.class);intent.putExtra("path", path);startActivityForResult(intent, PhotoUtil.PHOTO_CORPRESULT_CODE);}}

好了 发demo 了 我感觉写一些小demo 还是用eclipse方便一些. 主要eclipse 可以放很多个项目 …

Demo下载地址:Demo下载

原文链接:/liudao7994/article/details/53694204

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。