从相册或拍照获取头像
来源:互联网 发布:行书字帖 知乎 编辑:程序博客网 时间:2024/05/22 06:25
<LinearLayout android:id="@+id/tou" android:layout_below="@+id/text_title" android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="头像"/> <ImageView android:id="@+id/iv_img" android:layout_marginLeft="260dp" android:layout_width="50dp" android:layout_height="50dp" android:src="@mipmap/ic_launcher"/></LinearLayout>
package com.bwie.mydishidanyuan;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.support.v7.app.AppCompatActivity;import android.util.Base64;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private ImageView iv_img; private Button bt_camera; private Button bt_xiangce; private static final int PHOTO_REQUEST_CAREMA = 1;// 拍照 private static final int PHOTO_REQUEST_GALLERY = 2;// 从相册中选择 private static final int PHOTO_REQUEST_CUT = 3;// 结果 private static final String PHOTO_FILE_NAME = "temp_photo.jpg"; private File tempFile; private LinearLayout linear; private LinearLayout linear_name; private TextView text_name; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv_img = (ImageView) findViewById(R.id.iv_img); bt_camera = (Button) findViewById(R.id.bt_camera); bt_xiangce = (Button) findViewById(R.id.bt_xiangce);//从SharedPreferences获取图片 linear = (LinearLayout) findViewById(R.id.linear); linear_name = (LinearLayout) findViewById(R.id.name); text_name = (TextView) findViewById(R.id.text_name); getBitmapFromSharedPreferences();//监听两个按钮,相册按钮和相机按钮 bt_camera.setOnClickListener(this); bt_xiangce.setOnClickListener(this); /*linear_name.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, Main2Activity.class); startActivityForResult(intent,0); } });*/ } /*@Override public void onActivityReenter(int resultCode, Intent data) { super.onActivityReenter(resultCode, data); String result = data.getExtras().getString("result"); text_name.setText(result); }*/ public void quxiao(View view){ linear.setVisibility(View.INVISIBLE); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_camera: // 激活相机 Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); // 判断存储卡是否可以用,可用进行存储 if (hasSdcard()) { tempFile = new File(Environment.getExternalStorageDirectory(), PHOTO_FILE_NAME); // 从文件中创建uri Uri uri = Uri.fromFile(tempFile); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); } // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CAREMA startActivityForResult(intent, PHOTO_REQUEST_CAREMA); break; case R.id.bt_xiangce: // 激活系统图库,选择一张图片 Intent intent1 = new Intent(Intent.ACTION_PICK); intent1.setType("image/*"); // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_GALLERY startActivityForResult(intent1, PHOTO_REQUEST_GALLERY); break; } } private boolean hasSdcard() { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { return true; } else { return false; } } private void crop(Uri uri) { // 裁剪图片意图 Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true");// 裁剪框的比例,1:1 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1);// 裁剪后输出图片的尺寸大小 intent.putExtra("outputX", 250); intent.putExtra("outputY", 250); intent.putExtra("outputFormat", "JPEG");// 图片格式 intent.putExtra("noFaceDetection", true);// 取消人脸识别 intent.putExtra("return-data", true); // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CUT startActivityForResult(intent, PHOTO_REQUEST_CUT); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == PHOTO_REQUEST_GALLERY) { // 从相册返回的数据 if (data != null) { // 得到图片的全路径 Uri uri = data.getData(); crop(uri); } } else if (requestCode == PHOTO_REQUEST_CAREMA) { // 从相机返回的数据 if (hasSdcard()) { crop(Uri.fromFile(tempFile)); } else { Toast.makeText(MainActivity.this, "未找到存储卡,无法存储照片!", Toast.LENGTH_SHORT).show(); } } else if (requestCode == PHOTO_REQUEST_CUT) { // 从剪切图片返回的数据 if (data != null) { Bitmap bitmap = data.getParcelableExtra("data"); /** * 获得图片 */ iv_img.setImageBitmap(bitmap); //保存到SharedPreferences saveBitmapToSharedPreferences(bitmap); } try { // 将临时文件删除 tempFile.delete(); } catch (Exception e) { e.printStackTrace(); } } super.onActivityResult(requestCode, resultCode, data); } private void saveBitmapToSharedPreferences(Bitmap bitmap) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 80, byteArrayOutputStream); byte[] byteArray = byteArrayOutputStream.toByteArray(); String imageString = new String(Base64.encodeToString(byteArray, Base64.DEFAULT)); SharedPreferences sharedPreferences = getSharedPreferences("testSP", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("image", imageString); editor.commit(); //上传头像 setImgByStr(imageString, ""); } private void setImgByStr(String imgStr, String imgName) { String url = "https://www.zhaoapi.cn/file/upload"; Map<String, String> params = new HashMap<String, String>(); params.put("id", "11111111");// 11111111 params.put("data", imgStr); OkHttpClient okHttpClient = new OkHttpClient(); Request build = new Request.Builder().url(url).build(); okHttpClient.newCall(build).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()){ Log.i("上传成功", response.body().string()); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, "上传成功", Toast.LENGTH_SHORT).show(); } }); } } }); } private void getBitmapFromSharedPreferences() { SharedPreferences sharedPreferences=getSharedPreferences("testSP", Context.MODE_PRIVATE); //第一步:取出字符串形式的Bitmap String imageString=sharedPreferences.getString("image", "");//第二步:利用Base64将字符串转换为ByteArrayInputStream byte[] byteArray= Base64.decode(imageString, Base64.DEFAULT); if(byteArray.length==0){ iv_img.setImageResource(R.mipmap.ic_launcher); }else{ ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(byteArray); //第三步:利用ByteArrayInputStream生成Bitmap Bitmap bitmap= BitmapFactory.decodeStream(byteArrayInputStream); iv_img.setImageBitmap(bitmap); } }}
阅读全文
0 0
- 从相册或拍照获取头像
- 从手机相册或拍照选择头像
- Android 拍照或从相册设置头像
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- android 拍照或从相册获取图片 返回 bitmap
- Android拍照或从系统相册获取图片
- android从相册或拍照获取照片第三方开源库TakePhoto
- Android打开系统拍照&相册获取头像
- 获取相册图片或拍照
- android拍照或相册获取头像(兼容4.4以下,4.4,5.0,6.0版本)
- 安卓开发-拍照或相册选择头像和运行时动态获取权限
- 从相册\拍照获取图片
- iOS设置用户头像(从相册,图库或者拍照获取)
- 上传头像 拍照 相册
- Android开发--通过相册或拍照选择头像
- react-native-echarts 安卓版打包后,图表不显示
- java生成随机字符串(A-Z0-9)
- maven找jar包配置的网站,只需要搜索关键字即可找到需要的Jar包
- 查询
- 教务系统抢课程序的思路
- 从相册或拍照获取头像
- jquery获取元素在文档中的位置信息以及滚动条位置
- 共享单车技术含量,一篇文章全说透了!
- 脑机接口技术如何具体实现?
- 丁肇中:人工智能不可能发现相对论,不可能发现量子力学,也不可能发现暗物质
- JavaScript的DOM属性
- 比AlphaGo Zero更强的AlphaZero来了!8小时解决一切棋类!
- QT控件大全 二十五 QColorWidgets
- YTU.3137: 动态规划基础题目之拦截导弹