1

我有这段代码:

    @Override
public void onPictureTaken(byte[] data, Camera camera) {
    File pictureFileDir = getDir();
    if (!pictureFileDir.exists() && !pictureFileDir.mkdirs()) {
        Toast.makeText(context, "Dir not created. (ERR#GRA1)", Toast.LENGTH_LONG).show();
        return;
    }
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd_MM_yyyy_HH_mm_ss", Locale.US);
    String date = dateFormat.format(new Date());
    photoFile = acao + android_id + "_" + date + "_" + coordenadas + ".jpg";
    String filename = pictureFileDir.getPath() + File.separator + photoFile;
    File pictureFile = new File(filename);
    try {
        FileOutputStream fos = new FileOutputStream(pictureFile);
        fos.write(data);
        fos.close();
        Toast.makeText(context, "Saved.", Toast.LENGTH_SHORT).show();
        Login.totalTiradas++;
    } catch (Exception error) {
        Toast.makeText(context, "Not saved. (ERR#GRA2)", Toast.LENGTH_LONG).show();            
    }

    camera2.startPreview();
    aviso.setVisibility(View.INVISIBLE);

    String stringUrl = "111.222.333.444";

    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
    if (networkInfo != null && networkInfo.isConnected()) { 
        new conectaFTP().execute(stringUrl);
    } else {
        Toast.makeText(context, "Fail. Image not sent. (ERR#CON1)", Toast.LENGTH_LONG).show();
    }        
}

它将照片保存到 SD 卡,调用 AsyncTask 并上传图片。一切正常。

我需要调整图片大小。在保存或上传之前,任何人都对我有好处。

我无法inSampleSize正常Camera.setParameters工作(当然是我的错),或者如果这是更好的方法。

4

2 回答 2

0

首先创建一个Bitmapbyte[]

Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);

然后使用Bitmap.createScaledBitmap()

bmp=Bitmap.createScaledBitmap(bmp, width, height, true);// 如果启用了双线性过滤器,则为 true

于 2013-07-25T13:50:53.503 回答
0

通过使用解决setParameters

Camera.Parameters parametro = camera.getParameters();
parametro.setFlashMode("on");
List<Size> sizes = parametro.getSupportedPictureSizes();
for (int i = 0; i < sizes.size(); i++) {
    largura = sizes.get(i).width;
    altura = sizes.get(i).height;
    if (largura >= maxLargura) { break; }
}
parametro.setPictureSize(largura, altura);
camera.setParameters(parametro);
于 2013-07-25T14:39:46.873 回答