【发布时间】: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,问题与上面的链接略有不同,因为我想在捕获后和保存之前调整大小,我不从画廊中挑选......有什么帮助吗?
-
那你需要实现自己的相机。