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

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

时间:2023-12-30 09:07:07

相关推荐

android 自定义图片裁剪 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;

@Override

protected 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();

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// TODO Auto-generated method stub

super.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

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