2013-11-23 171 views
-1

我編輯了我的帖子,因爲我知道在拍攝它後立即調整圖像的大小是不可能的。所以我試圖在裁剪它後調整圖像大小。我已經在這裏實現了一些代碼http://developer.android.com/training/displaying-bitmaps/load-bitmap.html#load-bitmap,但它仍然沒有調整圖像大小。這裏是我的代碼:調整從Android攝像頭拍攝的圖像

private void splitImage(File[]listFile, File mediaStorage,int[] chunkNumbers) throws IOException 
{ 
    int rows ,cols; 
    String[] namaFile = new String[listFile.length]; 
    int chunk ; 
    File nf = null; 
    ArrayList<Bitmap> hasilSplit; 
    for(int i=0;i<listFile.length;i++) 
    { 
     int index=1; 
     namaFile[i] = listFile[i].getName(); 
     String nama = namaFile[i].split("\\.")[0]; 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inJustDecodeBounds = true; 
     ResizeGambar rg = new ResizeGambar(); 
     options.inSampleSize = rg.hitungInSampleSize(options); 
     //options.inJustDecodeBounds = false; 

     Bitmap gambarOri = BitmapFactory.decodeFile(listFile[i].getAbsolutePath(),options); 
     Bitmap scaledOri = Bitmap.createScaledBitmap(gambarOri, gambarOri.getWidth(), gambarOri.getHeight(), true); 
     //int chunk = (int)(gambarOri.getWidth() * gambarOri.getHeight()/100); 
     rows =(int) gambarOri.getWidth()/10; 
     cols =(int) gambarOri.getHeight()/10; 
     chunk = rows * cols; 
     chunkNumbers[i] = chunk; 
     System.out.println("Size of ChunkNumbers: " + chunkNumbers[i]); 
     hasilSplit = new ArrayList<Bitmap>(chunk); 
     int count = 0; 
     //koordinat awal chunk 
     for(int x=0;x<rows;x++) 
     { 
      for(int y=0;y<cols;y++) 
      { 
       hasilSplit.add(Bitmap.createBitmap(scaledOri,10*x,10*y,10,10)); 
       nf = new File(mediaStorage.getPath()+File.separator+nama+index+".jpg"); 
       index++; 
       FileOutputStream fo = new FileOutputStream(nf); 
       hasilSplit.get(count).compress(Bitmap.CompressFormat.JPEG, 50, fo); 
       count++; 
       fo.flush(); 
       fo.close(); 
      } 
     } 
     index= 1; 
    } 
} 

這是ResizeGambar.java

package com.example.cobaandroid; 
import android.graphics.BitmapFactory; 
public class ResizeGambar { 

final int reqWidth = 50; 
final int reqHeight=101; 

public ResizeGambar() 
{ 

} 

public int hitungInSampleSize(BitmapFactory.Options options) 
{ 
    final int height = options.outHeight; 
    final int width = options.outWidth; 
    int inSampleSize = 1; 
    if(height > reqHeight || width > reqWidth) 
    { 
     final int halfHeight = height/2; 
     final int halfWidth = width/2; 
     while((halfWidth/inSampleSize) > reqWidth && (halfHeight/inSampleSize) > reqHeight) 
     { 
      inSampleSize *=2; 
     } 
    } 
    return inSampleSize; 
} 

}

請人交給我你的幫助:(

+0

在谷歌的二秒搜索http://stackoverflow.com/questions/10773511/how-to-resize-an-image-i-picked-from-the-gallery-in-android – Emmanuel

+0

感謝您的回覆@Emmanuel ,問題是與上面的鏈接有所不同,因爲我想在捕獲之後調整大小並保存之前,我不從圖庫中選擇..任何幫助? – bohr

+0

然後你需要實現你自己的相機。 – Emmanuel

回答

1

是否有可能調整圖像後,我捕獲它之前保存到SD卡?

不,因爲你不是拍照的人。另一個應用程序是,無論哪個人正在處理您的請求ACTION_IMAGE_CAPTURE

+0

謝謝,那我怎麼能調整圖像後我蜷縮它?我已經從http://developer.android.com/training/displaying-bitmaps/load-bitmap.html#load-bitmap實現,但它仍然不起作用 – bohr

+0

@ user2997327:「它仍然不工作」不是可用的描述你的問題。請開始一個新的StackOverflow問題,在其中發佈自己的代碼並詳細解釋「仍不起作用」的含義。 – CommonsWare

+0

我已經編輯我的帖子@CommonsWare – bohr

0

這裏的a link有點類似的問題及其解決方案。一探究竟!

+0

請注意,[只有鏈接的答案](http://meta.stackoverflow.com/tags/link-only-answers/info)不鼓勵,所以答案應該是搜索解決方案的終點(vs.而另一個引用的中途停留時間往往會隨着時間推移而過時)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。 – kleopatra

相關問題