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

最初にBitmapfromを作成しますbyte[]

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

次に、それを使用してスケーリングしますBitmap.createScaledBitmap()

bmp=Bitmap.createScaledBitmap(bmp, width, height, true);// バイリニア フィルタが有効な場合は true

于 2013-07-25T13:50:53.503 に答える