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; } }
三星手机拍照,图片旋转问题的解决
最新推荐文章于 2021-05-31 02:27:16 发布