三星手机拍照,图片旋转问题的解决

来源:互联网 发布:一号店软件下载 编辑:程序博客网 时间:2024/04/25 05:04
package com.cyhz.library.view;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.media.ExifInterface;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ImageView;import java.io.File;import java.io.IOException;/** * Created by MyPC on 2015/9/25. */public class PictureActivity extends Activity implements View.OnClickListener {    private ImageView img;    private Button take_photo;    private String imgPath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "test";    private Handler mHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);        }    };    private Bitmap bitmap1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.picture);        img = (ImageView) findViewById(R.id.img);        take_photo = (Button) findViewById(R.id.take_photo);        take_photo.setOnClickListener(this);    }    @Override    public void onClick(View view) {        File file = new File(imgPath);        if (!file.exists()) {            file.mkdir();        }        File file1 = new File(imgPath + "/test.jpg");        Uri uri = Uri.fromFile(file1);        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");        intent.putExtra("orientation", true);        intent.putExtra("output", uri);        startActivityForResult(intent, 1);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (requestCode == 1) {            int degree = readPictureDegree(imgPath + "/test.jpg");            Log.e("sj", "degree:" + degree);            try {                BitmapUtil.compressBitmap(imgPath + "/test.jpg", imgPath + "/small.jpg", 202, 160, 100);                Bitmap bitmap = BitmapFactory.decodeFile(imgPath + "/small.jpg");               bitmap= rotaingImageView(degree,bitmap);                img.setImageBitmap(bitmap);            } catch (Exception e) {                e.printStackTrace();            }        }    }    /**     * 读取图片属性:旋转的角度     *     * @param path 图片绝对路径     * @return degree旋转的角度     */    public static int readPictureDegree(String path) {        int degree = 0;        try {            ExifInterface exifInterface = new ExifInterface(path);            int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);            switch (orientation) {                case ExifInterface.ORIENTATION_ROTATE_90:                    degree = 90;                    break;                case ExifInterface.ORIENTATION_ROTATE_180:                    degree = 180;                    break;                case ExifInterface.ORIENTATION_ROTATE_270:                    degree = 270;                    break;            }        } catch (IOException e) {            e.printStackTrace();        }        return degree;    }    public static Bitmap rotaingImageView(int angle, Bitmap bitmap) {        //旋转图片 动作        Matrix matrix = new Matrix();        ;        matrix.postRotate(angle);        System.out.println("angle2=" + angle);        // 创建新的图片        Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,                bitmap.getWidth(), bitmap.getHeight(), matrix, true);        return resizedBitmap;    }}
0 0
原创粉丝点击