调整从Android相机捕获的图像

时间:2013-11-23 16:46:34

标签: android camera resize

我编辑了我的帖子,因为我知道在拍摄后立即调整图像是不可能的。所以我试图在裁剪它之后调整图像大小。我已经从这里实现了一些代码http://developer.android.com/training/displaying-bitmaps/load-bitmap.html#load-bitmap,但它仍然没有调整图像的大小。这是我的代码:

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;
}

}

请任何人帮助我:(

2 个答案:

答案 0 :(得分:1)

  

在保存到sdCard之前捕获图像后是否可以立即调整图像大小?

不,因为你不是拍照的人。另一个应用是,无论哪个人处理您的ACTION_IMAGE_CAPTURE请求。

答案 1 :(得分:0)

这里有a link有些类似的问题及其解决方案。看看吧!