android camera根据屏幕图像大小设置显示

package com.example.camera;

import java.io.File;

import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.text.format.Time;
import android.util.Log;
import android.view.Display;
import android.widget.ImageView;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;


public class MainActivity extends Activity {

    private final static String TAG="camera";
    private final static int CAMERA_RESULT =0;
    private ImageView view;
    private String imageFilePath;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //得到当前系统时间
        Time t=new Time();
        t.setToNow();
        int year=t.year;
        int month=t.month;
        int day=t.monthDay;
        int hour=t.hour;
        int minute=t.minute;
        int second=t.second;
        Log.i(TAG, ""+year+month+day+hour+minute+second);
        String filename=""+year+month+day+hour+minute+second;
        //得到SD卡的路径也设置文件名
        //这里可以简化的写成imageFilePath=Uri.parse("file:sdcard/my.jpg");
        /*imageFilePath=Environment.getExternalStorageDirectory()
                .getAbsolutePath()+"/my01.jpg";*/
        imageFilePath=Environment.getExternalStorageDirectory()
                .getAbsolutePath()+"/"+filename+".jpg";
        //创建文件
        File file=new File(imageFilePath);
        //格式化为Uri
        Uri fileImageFilePath=Uri.fromFile(file);
        view=(ImageView)findViewById(R.id.imageview);
        Intent i=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);//启动intent
        //设置到意图中
        i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, fileImageFilePath);
        startActivityForResult(i, CAMERA_RESULT);
    }
    //返回接收
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode==RESULT_OK){
            //以1/8加载原图像的大小
            /*BitmapFactory.Options options=new BitmapFactory.Options();
            options.inSampleSize=8;
            Bitmap bitmap=BitmapFactory.decodeFile(imageFilePath, options);*/
            
            
            /*Bundle bundle=data.getExtras();
            Bitmap bitmap=(Bitmap) bundle.get("data");*/
            
            
//            view.setImageBitmap(bitmap);
            
            //得到图像的大小和显示的大小,动态解压
            Display display=getWindowManager().getDefaultDisplay();
            int dw=display.getWidth();
            int dh=display.getHeight();
            
            //加载图像
            BitmapFactory.Options options=new BitmapFactory.Options();
            options.inJustDecodeBounds=true;//设置之后可以设置长宽
            Bitmap bitmap=BitmapFactory.decodeFile(imageFilePath, options);
            
            int heightRatio=(int)Math.ceil(options.outHeight/(float)dh);
            int widthRatio=(int)Math.ceil(options.outWidth/(float)dw);
            
            Log.i(TAG, "heith:"+heightRatio);
            Log.i(TAG,"width:"+widthRatio);
            //判断长宽哪个大
            if(heightRatio>1 && widthRatio>1){
                if(heightRatio>widthRatio){
                    options.inSampleSize=heightRatio;
                }else{
                    options.inSampleSize=widthRatio;
                }
            }
            //对它进行真正的解码
            options.inJustDecodeBounds=false;
            bitmap=BitmapFactory.decodeFile(imageFilePath, options);
            view.setImageBitmap(bitmap);
            
            
            
        }
    }

  

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值