亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ImageView實現圖片裁剪和顯示功能

2019-11-07 23:59:06
字體:
來源:轉載
供稿:網友

ImageView實現圖片裁剪和顯示功能 首先在layout布局中設置按鈕和一個ImageView

<Button android:id="@+id/selectimagebtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="選擇圖片" /> <Button android:id="@+id/cutimagebtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="選擇圖片進行裁剪" /> <!-- 用于顯示圖片的信息 --> <ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" />

在Activity上寫代碼

public class MainActivity extends AppCompatActivity implements View.OnClickListener { PRivate Button selectImageBtn, cutImageBtn; private ImageView imageView; // 聲明兩個靜態的整型變量,主要用于意圖的返回的標志 private static final int IMAGE_SELECT = 1;// 選擇圖片 private static final int IMAGE_CUT = 2;// 裁剪圖片 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); selectImageBtn = (Button) findViewById(R.id.selectimagebtn); cutImageBtn = (Button) findViewById(R.id.cutimagebtn); imageView = (ImageView) findViewById(R.id.imageview); // 注冊監聽事件 selectImageBtn.setOnClickListener(this); cutImageBtn.setOnClickListener(this); }

實現OnClickListener的方法,和設置裁剪圖片的方法

@Override public void onClick(View v) { switch (v.getId()) { case R.id.selectimagebtn: //如何提取手機的圖片庫,并且進行選擇圖片的功能 Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);//打開手機的圖片庫 startActivityForResult(intent, IMAGE_SELECT); break; case R.id.cutimagebtn: Intent intent2 = getImageClipIntent(); startActivityForResult(intent2, IMAGE_CUT); } }private Intent getImageClipIntent() { Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);//不指定URL //實現對圖片的裁剪,必須要設置圖片的屬性和大小 intent.setType("image/*");//獲取任意的圖片類型 Set an explicit MIME data type.每個MIME類型由兩部分組成,前面是數據的大類別,例如聲音audio、圖象image等,后面定義具體的種類。 intent.putExtra("crop", "true");//滑動選中圖片區域 intent.putExtra("aspectX", 1);//表示剪切框的比例1:1的效果 intent.putExtra("aspectY", 1); intent.putExtra("outputX", 80);//指定輸出圖片的大小 intent.putExtra("outputY", 80); intent.putExtra("return-data", true);//有返回值 return intent; }

如果你想在Activity中得到新打開Activity關閉后返回的數據,你需要使用系統提供的startActivityForResult(Intent intent,int requestCode)方法打開新的Activity,新的Activity關閉后會向前面的Activity傳回數據,為了得到傳回的數據,你必須在前面的Activity中重寫onActivityResult(int requestCode, int resultCode,Intent data)方法

當新Activity關閉后,新Activity返回的數據通過Intent進行傳遞,Android平臺會調用前面Activity的onActivityResult()方法,把存放了返回數據的Intent作為第三個輸入參數傳入,在onActivityResult()方法中使用第三個輸入參數可以取出新Activity返回的數據。

需要返回數據或結果的,則使用startActivityForResult (Intent intent, intrequestCode),requestCode的值是自定義的,用于識別跳轉的目標Activity。

覆蓋onActivityResult方法

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { //處理圖片按照手機的屏幕大小顯示 if (requestCode == IMAGE_SELECT) { Uri uri = data.getData();//獲得圖片的路徑 Display display = getWindowManager().getDefaultDisplay(); Point point = new Point(); display.getSize(point); int width = point.x;//獲得屏幕的寬度 int height = point.y ;//屏幕高度 try { //實現對圖片的裁剪的類,是一個匿名內部類 BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = false; //對圖片的寬度和高度對應手機的屏幕進行匹配 Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri), null, options); //如果大于1表示圖片的高度大于手機屏幕的高度 int hRatio = (int) Math.ceil(options.outHeight / (float) height);//(int)Math.ceil是下取整 //如果大于1表示圖片的寬度大于手機屏幕的寬度 int wRatio = (int) Math.ceil(options.outWidth / (float) width); //如果hRatio或wRatio大于1,則把圖片縮放到1/radio的尺寸和1/radio^2的像素 if (hRatio > 1 || wRatio > 1) { if (hRatio > wRatio) { options.inSampleSize = hRatio; } else { options.inSampleSize = wRatio; } bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri), null, options); imageView.setImageBitmap(bitmap); }else{ //如果hRatio與wRatio為0,直接輸出 imageView.setImageBitmap(bitmap); } } catch (Exception e) { } //表示裁剪圖片 } else if (requestCode == IMAGE_CUT) { Bitmap bitmap = data.getParcelableExtra("data"); imageView.setImageBitmap(bitmap); } } }options.inJustDecodeBounds = false/true;

我們去解析一個圖片,如果太大,就會OOM,我們可以設置壓縮比例inSampleSize,但是這個壓縮比例設置多少就是個問題,所以我們解析圖片可以分為倆個步驟,第一步就是獲取圖片的寬高,這里要設置Options.inJustDecodeBounds=true,這時候decode的bitmap為null,只是把圖片的寬高放在Options里。

然后第二步就是設置合適的壓縮比例inSampleSize,inSampleSize為原來的1/ratio,這時候獲得合適的Bitmap。

再設置options.inJustDecodeBounds = false;重新讀出圖片bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri), null, options);


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91在线视频成人| 国产97在线亚洲| 成人欧美一区二区三区黑人孕妇| 午夜精品理论片| 国产成人avxxxxx在线看| 国产一区二区在线免费视频| 国产97色在线|日韩| 国内免费精品永久在线视频| 亚洲欧美国产另类| 国产精品国产三级国产专播精品人| 日韩美女免费视频| 国产欧美va欧美va香蕉在线| 欧美在线视频免费| 成人免费视频xnxx.com| 91香蕉嫩草神马影院在线观看| 亚洲久久久久久久久久| 日韩av在线高清| 久久亚洲影音av资源网| 国产激情综合五月久久| 色综久久综合桃花网| 欧美日韩在线免费| 亚洲午夜小视频| 欧美在线精品免播放器视频| 国产丝袜一区二区| 久久久久99精品久久久久| 国产欧美一区二区三区久久| 精品亚洲国产成av人片传媒| 亚洲奶大毛多的老太婆| 国产日韩视频在线观看| 91精品91久久久久久| 按摩亚洲人久久| 国产精品三级久久久久久电影| 久久视频在线免费观看| 久久久久国产视频| 亚洲天堂一区二区三区| 欧美黑人xxxx| 欧美性猛交xxxx乱大交| 欧美亚洲日本黄色| 高清亚洲成在人网站天堂| 久久视频在线直播| 成人中文字幕+乱码+中文字幕| 成人国产精品免费视频| 一区二区三区四区精品| 欧美久久精品午夜青青大伊人| 8050国产精品久久久久久| 国产精品欧美日韩久久| 91色视频在线导航| 免费91麻豆精品国产自产在线观看| 日韩的一区二区| 欧美一级在线亚洲天堂| 欧美日韩亚洲国产一区| 国产在线观看一区二区三区| 亚洲日韩欧美视频| 狠狠色狠狠色综合日日五| 亚洲色图五月天| 久久久噜噜噜久久中文字免| 日本免费一区二区三区视频观看| 日韩性xxxx爱| 亚洲少妇激情视频| 亚洲网址你懂得| 久久久久久香蕉网| 久久免费视频在线观看| 一本色道久久88综合亚洲精品ⅰ| 国产免费一区二区三区香蕉精| 日韩女优人人人人射在线视频| 国产丝袜视频一区| 538国产精品视频一区二区| 亚洲欧美在线磁力| 国产精品久久久久久av| 国产精品国产亚洲伊人久久| 国产一区二区丝袜高跟鞋图片| 国产精品久久电影观看| 黑人巨大精品欧美一区二区一视频| 日韩毛片在线观看| 91久久国产婷婷一区二区| 欧美激情2020午夜免费观看| 91免费视频网站| 成人国产精品久久久久久亚洲| 午夜免费在线观看精品视频| 亚洲网站在线看| 91精品免费久久久久久久久| 日韩欧美在线国产| 精品久久香蕉国产线看观看gif| 精品人伦一区二区三区蜜桃网站| 国产在线拍偷自揄拍精品| 亚洲激情免费观看| 欧美日韩免费网站| 91po在线观看91精品国产性色| 超碰91人人草人人干| 综合136福利视频在线| 成人高清视频观看www| 国产精品99蜜臀久久不卡二区| 国模精品系列视频| 日韩中文字幕在线视频播放| 久久久久日韩精品久久久男男| 欧美专区在线播放| 欧美激情在线播放| 久久精品成人欧美大片古装| 日韩视频免费在线观看| 欧美日本在线视频中文字字幕| 日韩欧美在线观看视频| 亚洲午夜激情免费视频| 国产欧美日韩视频| 成人免费午夜电影| 日本高清+成人网在线观看| 久久久久久国产三级电影| 日韩久久精品成人| 久久黄色av网站| 日韩欧美主播在线| 亚洲日韩第一页| 一区二区三区黄色| 在线日韩日本国产亚洲| 欧美美女操人视频| 亚洲成人国产精品| 欧美在线亚洲一区| 久久综合免费视频| 激情av一区二区| 国产91色在线免费| 亚洲激情视频网| 青青青国产精品一区二区| 久久久人成影片一区二区三区| 亚洲精品电影久久久| 中文.日本.精品| 国产精品99蜜臀久久不卡二区| 国产欧美最新羞羞视频在线观看| 国产精品直播网红| 成人精品一区二区三区电影免费| 中文字幕日韩在线观看| 精品夜色国产国偷在线| 久久久久国色av免费观看性色| 精品亚洲va在线va天堂资源站| 国内揄拍国内精品| 日韩成人在线视频观看| 亚洲精品www| 美女精品久久久| 亚洲天堂av在线免费观看| 热久久99这里有精品| 亚洲在线www| 在线观看国产欧美| 亚洲免费成人av电影| 欧美一区三区三区高中清蜜桃| 欧美日韩亚洲精品一区二区三区| 亚洲午夜av久久乱码| 国产视频欧美视频| 国产欧美va欧美va香蕉在线| 中文字幕一区日韩电影| 91网站在线免费观看| 少妇久久久久久| 97在线观看视频国产| 亚洲高清久久久久久| 国产成人啪精品视频免费网| 亚洲影影院av| 亚洲女人天堂av| 国产91在线播放九色快色| 欧美日韩国产丝袜美女| 九九精品视频在线| 亚洲精品自拍偷拍| 成人精品在线观看| 国产精品视频一| 欧美黑人一级爽快片淫片高清| 久久人91精品久久久久久不卡| 欧美久久精品午夜青青大伊人| 久久香蕉国产线看观看网| 国产视频丨精品|在线观看|