【问题标题】:Resize Image captured from android camera调整从 android 相机捕获的图像大小
【发布时间】:2013-11-23 16:46:34
【问题描述】:

我编辑了我的帖子,因为我知道在捕获图像后无法立即调整图像大小。所以我在裁剪图像后尝试调整图像大小。我已经从这里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;
}

}

请任何人给我你的帮助:(

【问题讨论】:

  • 感谢您的回复@Emmanuel,问题与上面的链接略有不同,因为我想在捕获后和保存之前调整大小,我不从画廊中挑选......有什么帮助吗?
  • 那你需要实现自己的相机。

标签: android camera resize


【解决方案1】:

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

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

【讨论】:

  • 谢谢,那么我如何在裁剪后调整图像大小?我已经从developer.android.com/training/displaying-bitmaps/… 实现了,但它仍然无法正常工作
  • @user2997327:“它仍然不起作用”不是对您的问题的可用描述。请开始一个新的 StackOverflow 问题,在其中发布您自己的代码并详细解释“它仍然无法正常工作”的含义。
  • 互联网上有很多 Android 开发者支持网站,提供多种语言的帮助。我在andglobe.com 列出了几个。使用以更适合您的语言运行的网站,您可能会有更好的运气。否则,您将需要详细解释“它仍然没有调整图像大小”的实际含义。例如,它会崩溃吗?如果是这样,您从 LogCat 中的堆栈跟踪中学到了什么?
【解决方案2】:

这里是a link,用于解决一些类似的问题及其解决方案。看看吧!

【讨论】:

  • 请注意 link-only answers 是不鼓励的,所以答案应该是寻找解决方案的终点(而不是另一个参考中途停留,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。
猜你喜欢
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多