首页 > 其他分享 >通过拍照或选择本地图片并剪裁图片设置成头像

通过拍照或选择本地图片并剪裁图片设置成头像

时间:2023-04-06 21:34:45浏览次数:40  
标签:void 头像 Intent new Override import android 剪裁 图片


还是直接上代码

import java.io.File;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class CropActivity extends BaseActivity {
	private Context context;
	private Button btn_crop;
	private String[] items = new String[] { "选择本地图片", "拍照" };
	
	/*头像名称*/ 
    private static final String IMAGE_FILE_NAME = "faceImage.jpg"; 
    
	/* 请求码*/ 
    private static final int IMAGE_REQUEST_CODE = 0;  
    private static final int CAMERA_REQUEST_CODE = 1;  
    private static final int RESULT_REQUEST_CODE = 2;  
    
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_crop);
        context=this;
        initViews();
    }

	
	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		initValues();
	}

	@Override
	protected void updateViews(Object o) {
		// TODO Auto-generated method stub

	}

	@Override
	protected void initViews() {
		// TODO Auto-generated method stub
		
		btn_crop=(Button)findViewById(R.id.btn_crop);
		btn_crop.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				showDialog();
			}
		});
		
	}

	@Override
	protected void initValues() {
		// TODO Auto-generated method stub
	}

	@Override
	protected void initHandler() {
		// TODO Auto-generated method stub

	}
	
	private void showDialog() {  
        
        new AlertDialog.Builder(this)  
                .setTitle("设置头像")  
                .setItems(items, new DialogInterface.OnClickListener() {  
 
                    @Override 
                    public void onClick(DialogInterface dialog, int which) {  
                        switch (which) {  
                        case 0:  
                            Intent intentFromGallery = new Intent();  
                            intentFromGallery.setType("image/*"); // 设置文件类型  
                            intentFromGallery.setAction(Intent.ACTION_GET_CONTENT);
                            startActivityForResult(intentFromGallery,IMAGE_REQUEST_CODE); 
                            break;  
                        case 1:  
                            Intent intentFromCapture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                            // 判断存储卡是否可以用,可用进行存储  
                            if (hasSdcard()) {  
                                intentFromCapture.putExtra(MediaStore.EXTRA_OUTPUT,
                                        Uri.fromFile(new File(Environment.getExternalStorageDirectory(),IMAGE_FILE_NAME)));
                            }  
                            startActivityForResult(intentFromCapture,CAMERA_REQUEST_CODE);
                            break;  
                        }  
                    }  
                })  
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {  
 
                    @Override 
                    public void onClick(DialogInterface dialog, int which) {  
                        dialog.dismiss();  
                    }  
                }).show();  
 
    }  
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// 结果码不等于取消时候
		if (resultCode != RESULT_CANCELED) {
			switch (requestCode) {
			case IMAGE_REQUEST_CODE:
				startPhotoZoom(data.getData());
				break;
			case CAMERA_REQUEST_CODE:
				if (hasSdcard()) {
					File tempFile = new File(Environment.getExternalStorageDirectory(),IMAGE_FILE_NAME);
					startPhotoZoom(Uri.fromFile(tempFile));
				} else {
					showToast("未找到存储卡,无法存储照片!");
				}

				break;
			case RESULT_REQUEST_CODE:
				if (data != null) {
					setImageToView(data);
				}
				break;
			}
		}
		super.onActivityResult(requestCode, resultCode, data);
	}
	 
	    /**  
	     * 裁剪图片方法实现  
	     *   
	     * @param uri  
	     */  
	    public void startPhotoZoom(Uri uri) {  
	    	if(uri==null){
				Log.i("tag", "The uri is not exist.");
			}
	        Intent intent = new Intent("com.android.camera.action.CROP");  
	        intent.setDataAndType(uri, "image/*");  
	        // 设置裁剪  
	        intent.putExtra("crop", "true");  
	        // aspectX aspectY 是宽高的比例  
	        intent.putExtra("aspectX", 1);  
	        intent.putExtra("aspectY", 1);  
	        // outputX outputY 是裁剪图片宽高  
	        intent.putExtra("outputX", 320);  
	        intent.putExtra("outputY", 320);  
	        intent.putExtra("return-data", true);  
	        startActivityForResult(intent, 2);  
	    }  
	 
	    /**  
	     * 保存裁剪之后的图片数据  
	     *   
	     * @param picdata  
	     */  
	    private void setImageToView(Intent data) {  
	        Bundle extras = data.getExtras();  
	        if (extras != null) {  
	            Bitmap photo = extras.getParcelable("data");  
	            Drawable drawable = new BitmapDrawable(photo);  
	            btn_crop.setBackgroundDrawable(drawable);
	        }  
	    }  
	
	
}





Android 根据角度旋转图片


标签:void,头像,Intent,new,Override,import,android,剪裁,图片
From: https://blog.51cto.com/u_5454003/6174172

相关文章

  • 爬取王者荣耀皮肤并保存图片
    importrequestsimporttimeimportpathlibfromlxmlimportetreeheaders={"user-agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/108.0.0.0Safari/537.36"}url="https://pvp.qq.com......
  • vue第五课:图片切换实例
    知识点:1,定义图片数组2,添加图片索引3,绑定src属性4,图片切换逻辑需求:第一张图片不显示上一页(隐藏)最后一张图片不显示下一页(隐藏)<divid='app'><img:src="imgarr[index]"><ahref="#"v-show="index!=0"@click="prev"><imgs......
  • springboot项目图片不显示的问题
    首先确认你的图片路径是对的那么大概率就是浏览器缓存的原因,因为页面直接用的是缓存的旧数据,所以显示不出来。再不修改浏览器设置的情况下,最简单的办法就是直接项目在pom.xml文件里引入devtools如下:<dependency><groupId>org.springframework.boot</groupId><artifactId>sp......
  • JavaWeb——HTML基本标签详解及案例实战(文件标签、文本标签、图片标签、列表标签、链
    目录1、文件标签2、文本标签3、图片标签4、列表标签5、链接标签6、块标签7、语义化标签8、表格标签9、综合案例上一节介绍了HTML的基本概念,和基本语法,本节介绍下HTML的基本标签和表单标签。这部分学习可以参照W3Cschool,一个很好的网站。1、文件标签文件标签是构成HTML最基本的标签,......
  • 解决picgo上传图片到github失败的方法
    今天在typora上写笔记,发现图片不能上传到github上,网上找了几个方法,发现都不能解决问题,一直在报错,折腾一会才解决,下面分享我的解决问题过程:首先先检查自己配置是否有错,检查仓库名是否写错,是否带有空格,picgo空格默认的是‘_’,分支名字可以是main或master,token可以再生成一个复制......
  • Android 加载图片占用内存分析
    作者:XuJie不同Android版本,对一张图片的内存处理方式是不一样的,使用不正确会导致OOM的发生,这篇文章带你梳理内存占用情况,选择适合你的图片加载模式,解决OOM问题。一、背景你知道吗一张5.48MB,宽高像素为4896*6528的24位的静态图片,放在Android工程目录下面的res/drawable-[density]/......
  • wordpress粘贴图片自动上传到服务器(Java版)
    ​ 这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下)<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@     page contentType="text/html;cha......
  • Python Opencv等比例缩放图片
    PythonOpencv等比例缩放图片前言前提条件相关介绍实验环境等比例缩放图片代码实现输出结果前言本文是个人使用PythonOpencv处理图片的笔记,由于水平有限,难免出现错漏,敬请批评改正。更多精彩内容,可点击进入我的个人主页查看前提条件熟悉Python相关介绍Python是一种跨平台的计算机......
  • pdf页转图片
    pdf转图片依赖<dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</artifactId><version>2.0.24</version></dependency><dependency><groupId>org.apache.pdfbox</g......
  • 项目实践后的图片压缩完整使用过程【vue3+js】
    van-uploader+图片压缩+图片base64转成file compressImage.jsconstACCEPT=['image/jpg','image/png','image/jpeg']constMAXSIZE=1024*1024*2;constMAXTIP="4"//压缩算法函数/*1.首先拿到了base64的图片字符串2.创建一个image对象,获......