成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

android調(diào)用原生圖片裁剪后圖片尺寸縮放的解決方法

在安卓開發(fā)中,如果對拍照后的圖片進(jìn)行圖片裁剪,如果是調(diào)用系統(tǒng)的裁剪,如下:

10年專注成都網(wǎng)站制作,成都企業(yè)網(wǎng)站定制,個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專注于成都企業(yè)網(wǎng)站定制,高端網(wǎng)頁制作,對木制涼亭等多個(gè)領(lǐng)域,擁有多年的網(wǎng)站營銷經(jīng)驗(yàn)。

/* 
  * 裁剪圖片 
  */ 
 private void cropPhoto() { 
 
  Intent intent = new Intent("com.android.camera.action.CROP"); 
  Uri uri = Uri.parse("file://" + picSavePath); 
  intent.setDataAndType(uri, "image/*"); 
  intent.putExtra("crop", "true"); 
  // intent.putExtra("aspectX", 3); 
  // intent.putExtra("aspectY", 2); 
  intent.putExtra("outputX", cropX); 
  intent.putExtra("outputY", cropY); 
  intent.putExtra("scale", "true"); 
  intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); 
  intent.putExtra("return-data", "false"); 
  intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); 
  intent.putExtra("noFaceDetection", "true"); // no face detection 
  startActivityForResult(intent, CROP_PICTURE); 
 } 

這樣,就開始對圖片進(jìn)行裁剪了,但是這樣會有一個(gè)問題,當(dāng)裁剪框選擇的圖片與錄入的cropX,xropY的形狀不同時(shí),比如傳入的參數(shù)值是個(gè)w>h的長方形,而選擇框選擇的是w<h的長方形時(shí),這樣會導(dǎo)致裁剪的圖片結(jié)果會被壓縮變形。

為了解決壓縮變形的問題,我的思路是這樣的:

1,先對圖片進(jìn)行裁剪,不設(shè)置默認(rèn)的裁剪圖片尺寸。

2.對裁剪后的圖片再進(jìn)行圖片的縮放。縮放是采角的矩陣的方式進(jìn)行的縮放

代碼如下:

1.

/* 
  * 裁剪圖片, 
  */ 
 private void cropPhotoAndZoom() { 
 
  Intent intent = new Intent("com.android.camera.action.CROP"); 
  Uri uri = Uri.parse("file://" + picSavePath); 
  intent.setDataAndType(uri, "image/*"); 
  intent.putExtra("crop", "true"); 
  intent.putExtra("scale", "true"); 
  intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); 
  intent.putExtra("return-data", "false"); 
  intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); 
  intent.putExtra("noFaceDetection", "true"); // no face detection 
  startActivityForResult(intent, CROP_PICTURE_ANDZOOM); 
 } 

2.

/** 
  * 裁剪后,根據(jù)裁剪框的長寬比,同時(shí)根據(jù)圖片的需求縮放尺寸進(jìn)行縮放 
  * 
  * @param path 
  * @param x 
  *   原始的需求尺寸width 
  * @param y 
  *   heiht 
  * @return 
  */ 
 public static Bitmap toBigZoom(String path, float x, float y) { 
  Log.e("bitmaputil", "path---" + path + "--x--y--" + x + "--" + y); 
  Bitmap bitmap = BitmapFactory.decodeFile(path); 
  if (bitmap != null) { 
 
   int w = bitmap.getWidth(); 
   int h = bitmap.getHeight(); 
   float sx = 0; 
   float sy = 0; 
   if ((float) w / h >= 1) { 
    sx = (float) y / w; 
    sy = (float) x / h; 
    Log.e("bitmaputil---", "w/h--->=1"); 
   } else { 
    sx = (float) x / w; 
    sy = (float) y / h; 
    Log.e("bitmaputil---", "w/h---<1"); 
   } 
   Matrix matrix = new Matrix(); 
   matrix.postScale(sx, sy); // 長和寬放大縮小的比例 
   Bitmap resizeBmp = Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true); 
   Log.e("bitmaputil---", "w---" + resizeBmp.getWidth() + "h--" + resizeBmp.getHeight()); 
   return resizeBmp; 
  } 
 
  return null; 
 } 

2中代碼,通過判斷裁剪框的w,h比來設(shè)置圖片是放大是橫向放大,還是豎向放大,放大后的效果基本上能滿足需求。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

網(wǎng)站欄目:android調(diào)用原生圖片裁剪后圖片尺寸縮放的解決方法
標(biāo)題來源:http://jinyejixie.com/article20/pgeijo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司定制開發(fā)、手機(jī)網(wǎng)站建設(shè)、微信小程序網(wǎng)站維護(hù)、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
五河县| 镇原县| 兴城市| 兴城市| 老河口市| 云阳县| 墨竹工卡县| 望江县| 芜湖市| 交口县| 丹寨县| 邵武市| 汉中市| 太和县| 称多县| 汝州市| 屏东县| 随州市| 丰台区| 洞头县| 丹凤县| 河北区| 榆树市| 青田县| 天门市| 鄂州市| 甘洛县| 万州区| 东莞市| 凤翔县| 佛冈县| 新乡县| 苏尼特左旗| 天等县| 龙门县| 莱西市| 武川县| 广安市| 洪湖市| 青浦区| 玉田县|