• android 裁剪图片大小 控制图片尺寸


    用BitmapFactory获取适合屏幕大小的图片 和自带的图片裁剪工具

    package com.lin.image; 
     
    import android.app.Activity; 
    import android.content.Intent; 
    import android.graphics.Bitmap; 
    import android.graphics.BitmapFactory; 
    import android.net.Uri; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.ImageView; 
     
    public class ImageScaleActivity extends Activity  implements View.OnClickListener{ 
        /** Called when the activity is first created. */ 
        private Button selectImageBtn; 
        private Button cutImageBtn; 
        private ImageView imageView; 
        private static final int  IMAGE_SELECT=1; 
        private static final int  IMAGE_CUT=2; 
        @Override 
        public void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.main); 
             
            selectImageBtn=(Button)findViewById(R.id.selectImageBtn); 
            cutImageBtn=(Button)findViewById(R.id.catImageBtn); 
            imageView=(ImageView)findViewById(R.id.imageView); 
             
            cutImageBtn.setOnClickListener(this); 
            selectImageBtn.setOnClickListener(this); 
           
        } 
     
        @Override 
        public void onClick(View v) { 
    
    <span style="white-space:pre">        </span>//截取适合屏幕大小的图片 
            if(v==selectImageBtn){ 
            Intent intent=new Intent(Intent.ACTION_PICK, 
                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
                startActivityForResult(intent, IMAGE_SELECT); 
            }//一般用于头像等需要设置指定大小 
            else if(v==cutImageBtn){ 
                Intent intent=getImageClipIntent(); 
                startActivityForResult(intent, IMAGE_CUT); 
            } 
        } 
     
        @Override 
        protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
            // TODO Auto-generated method stub 
            if(resultCode==RESULT_OK){ 
                if(requestCode==IMAGE_SELECT){ 
                Uri imageFileUri =intent.getData(); 
                int dw=getWindowManager().getDefaultDisplay().getWidth(); 
                int dh=getWindowManager().getDefaultDisplay().getHeight()/2; 
                //已屏幕宽 和一般的高作为图片显示的最大尺寸 
                try{ 
                    BitmapFactory.Options factory=new BitmapFactory.Options(); 
                    factory.inJustDecodeBounds=true; //当为true时  允许查询图片不为 图片像素分配内存 
                    Bitmap bmp=BitmapFactory.decodeStream(getContentResolver() 
                            .openInputStream(imageFileUri),null,factory); 
                    int hRatio=(int)Math.ceil(factory.outHeight/(float)dh); //图片是高度的几倍 
                    int wRatio=(int)Math.ceil(factory.outWidth/(float)dw); //图片是宽度的几倍 
                    System.out.println("hRatio:"+hRatio+"  wRatio:"+wRatio); 
                    //缩小到  1/ratio的尺寸和 1/ratio^2的像素 
                    if(hRatio>1||wRatio>1){ 
                        if(hRatio>wRatio){ 
                            factory.inSampleSize=hRatio;  
                        } 
                        else 
                            factory.inSampleSize=wRatio; 
                    } 
                    factory.inJustDecodeBounds=false; 
                     bmp=BitmapFactory.decodeStream(getContentResolver() 
                            .openInputStream(imageFileUri),null,factory); 
                     imageView.setImageBitmap(bmp); 
                }catch(Exception ex){ 
                     
                } 
                } 
                else if(requestCode==IMAGE_CUT){ 
                    Bitmap bmp=intent.getParcelableExtra("data"); 
                    imageView.setImageBitmap(bmp); 
                } 
            } 
             
        } 
            /**
             * 获取剪切后的图片
             */ 
            public static Intent getImageClipIntent() { 
     
                Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null); 
                intent.setType("image/*"); 
                intent.putExtra("crop", "true");  
                intent.putExtra("aspectX", 1);//裁剪框比例 
                intent.putExtra("aspectY", 1); 
                intent.putExtra("outputX", 80);//输出图片大小 
                intent.putExtra("outputY", 80); 
                intent.putExtra("return-data", true); 
                return intent; 
            } 
         
         
    }

     

    摘自 dikeboy1234的专栏

  • 相关阅读:
    在C#中使用SQL存储过程说明
    asp.net后台获取html控件值
    SQL字符串操作汇总[记住这个]select substring(quantityperunit,charindex('',quantityperunit)+1,100) as 结果 from products
    分页控件AspnetPager的用法,巩固用
    摆脱Access在.net中中模糊查询,老错的困扰
    基于黑金开发板的秒表verilog hdl程序
    2808 sci 接收中断
    黑金开发板状态机实现的可用按键控制的流水灯
    基于黑金开发板的键盘边沿检测程序
    可以使用键盘实现加减数的数码管的verilog hdl程序(基于黑金开发板)
  • 原文地址:https://www.cnblogs.com/a354823200/p/4002418.html
Copyright © 2020-2023  润新知