上传头像和圆角图片
来源:互联网 发布:网络模块接法图解 b 编辑:程序博客网 时间:2024/05/18 15:28
Activity
package (包名)import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.content.SharedPreferences;import android.graphics.Bitmap;import android.net.Uri;import android.os.Environment;import android.provider.MediaStore;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ImageView;import com.bwie.fragment12.presenter.PresenterLogin;import com.bwie.fragment12.view.LoginView;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import okhttp3.Call;public class TouXiangActivity extends AppCompatActivity implements LoginView { private Button btn_change; private ImageView iv_personal_icon; private SharedPreferences sp; protected static final int CHOOSE_PICTURE = 0; protected static final int TAKE_PICTURE = 1; private static final int CROP_SMALL_PICTURE = 2; protected static Uri tempUri; private PresenterLogin loginPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tou_xiang); initview(); sp = getSharedPreferences("msg", MODE_PRIVATE); loginPresenter = new PresenterLogin(this); btn_change.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showChoosePicDialog(); } }); } private void showChoosePicDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("设置头像"); String[] items = { "选择本地照片", "拍照" }; builder.setNegativeButton("取消", null); builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case CHOOSE_PICTURE: // 选择本地照片 Intent openAlbumIntent = new Intent( Intent.ACTION_GET_CONTENT); openAlbumIntent.setType("image/*"); startActivityForResult(openAlbumIntent, CHOOSE_PICTURE); break; case TAKE_PICTURE: // 拍照 Intent openCameraIntent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE); tempUri = Uri.fromFile(new File(Environment .getExternalStorageDirectory(), "image.jpg")); // 指定照片保存路径(SD卡),image.jpg为一个临时文件,每次拍照后这个图片都会被替换 openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, tempUri); startActivityForResult(openCameraIntent, TAKE_PICTURE); break; } } }); builder.create().show(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { // 如果返回码是可以用的 switch (requestCode) { case TAKE_PICTURE: startPhotoZoom(tempUri); // 开始对图片进行裁剪处理 break; case CHOOSE_PICTURE: startPhotoZoom(data.getData()); // 开始对图片进行裁剪处理 break; case CROP_SMALL_PICTURE: if (data != null) { setImageToView(data); // 让刚才选择裁剪得到的图片显示在界面上 } break; } } } /** * 裁剪图片方法实现 * * @param uri */ protected void startPhotoZoom(Uri uri) { if (uri == null) { Log.i("tag", "The uri is not exist."); } tempUri = uri; 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", 150); intent.putExtra("outputY", 150); intent.putExtra("return-data", true); startActivityForResult(intent, CROP_SMALL_PICTURE); } /** * 保存裁剪之后的图片数据 * * @param * * @param */ protected void setImageToView(Intent data) { Bundle extras = data.getExtras(); if (extras != null) { Bitmap photo = extras.getParcelable("data"); //photo = Utils.toRoundBitmap(photo,tempUri); // 这个时候的图片已经被处理成圆形的了 iv_personal_icon.setImageBitmap(photo); String data2 = photo+""; sp.edit().putString("data",data2); uploadPic(photo); } } private File uploadPic(Bitmap bitmap) { // 上传至服务器 // ... 可以在这里把Bitmap转换成file,然后得到file的url,做文件上传操作 // 注意这里得到的图片已经是圆形图片了 // bitmap是没有做个圆形处理的,但已经被裁剪了 File file=new File(Environment.getExternalStorageDirectory()+"/aaa.jpg");//将要保存图片的路径 try { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos); bos.flush(); bos.close(); } catch (IOException e) { e.printStackTrace(); } return file; } private void initview() { btn_change = (Button) findViewById(R.id.btn_change); iv_personal_icon = (ImageView) findViewById(R.id.iv_personal_icon); } public void shangchuan(View view){ //将String类型字符串转化为Bitmap File file = new File(Environment.getExternalStorageDirectory()+"/aaa.jpg"); Bundle bundle = getIntent().getExtras(); String uid = bundle.getString("uid"); System.out.println("----------uid:"+uid); loginPresenter.upload(uid,file); } @Override public void nameError(String msg) { } @Override public void passError(String msg) { } @Override public void successLogin(String code, String msg) { System.out.println("======msg"+msg); finish(); } @Override public void failLogin(String code, String msg) { } @Override public void failure(Call call, IOException e) { }}
圆角图片
package (包名)import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.Rect;import android.graphics.Shader;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.ColorDrawable;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.widget.ImageView;/** * Created by on 2017/9/28. */public class ImageViewPlus extends ImageView { private Paint mPaintBitmap = new Paint(Paint.ANTI_ALIAS_FLAG); private Bitmap mRawBitmap; private BitmapShader mShader; private Matrix mMatrix = new Matrix(); @Override protected void onDraw(Canvas canvas) { Bitmap rawBitmap = getBitmap(getDrawable()); if (rawBitmap != null){ int viewWidth = getWidth(); int viewHeight = getHeight(); int viewMinSize = Math.min(viewWidth, viewHeight); float dstWidth = viewMinSize; float dstHeight = viewMinSize; if (mShader == null || !rawBitmap.equals(mRawBitmap)){ mRawBitmap = rawBitmap; mShader = new BitmapShader(mRawBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); } if (mShader != null){ mMatrix.setScale(dstWidth / rawBitmap.getWidth(), dstHeight / rawBitmap.getHeight()); mShader.setLocalMatrix(mMatrix); } mPaintBitmap.setShader(mShader); float radius = viewMinSize / 2.0f; canvas.drawCircle(radius, radius, radius, mPaintBitmap); } else { super.onDraw(canvas); } } public ImageViewPlus(Context context, AttributeSet attrs) { super(context, attrs); } private Bitmap getBitmap(Drawable drawable){ if (drawable instanceof BitmapDrawable){ return ((BitmapDrawable)drawable).getBitmap(); } else if (drawable instanceof ColorDrawable){ Rect rect = drawable.getBounds(); int width = rect.right - rect.left; int height = rect.bottom - rect.top; int color = ((ColorDrawable)drawable).getColor(); Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.drawARGB(Color.alpha(color), Color.red(color), Color.green(color), Color.blue(color)); return bitmap; } else { return null; } }}
阅读全文
0 0
- 上传头像和圆角图片
- SpringMVC 上传图片和头像
- 创建圆形头像和圆角图片
- 创建圆形头像和圆角图片
- 头像控件和圆角图片
- 上传图片 头像
- 上传图片,头像
- Android头像上传和java服务端接收图片。
- 如何创建圆形头像和圆角图片
- 移动端h5头像上传、头像裁切、上传图片
- Android头像(图片)上传/文件上传
- Android上传头像,图片剪裁,压缩图片
- Android上传头像,图片剪裁,压缩图片
- Android上传头像,图片剪裁,压缩图片
- 个人资料上传头像模块,拍照+图库+图片剪裁+圆形头像
- Android 自定义圆角图片/头像
- 上传头像或图片后不刷新
- iOS上传图片或者头像到服务器。
- 内联/嵌入/外部样式表的优先级
- OpenGL阴影,Shadow Volumes(附源程序,使用 VCGlib )
- 求两个数的最大公约数和最小公倍数
- python-025
- 2018-10月份-格科微电子 软件开发 笔试题目
- 上传头像和圆角图片
- OkHttp里
- Java实现二分查找
- (伪分布式)zookeeper+solr搭建集群(2)
- H5和CSS3中新增元素
- linux环境下,解决eclipse找不到Pylon示例程序链接库的问题
- Java面试题Day5
- [树hash]BZOJ 4337——BJOI2015 树的同构
- Python·Jupyter Notebook的使用方法