0

こんにちは私はカメラアプリケーションを開発しています。画像を撮影した後、画像はSDカードに保存されます。SDカードに保存しながら画像のサイズを400kbから500kbに​​したいのですが、今では1MB以上かかります。画像をキャプチャした後にSDカードに圧縮して保存する方法。

私のコードは

 public void onClick(View v) {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            imageName="MyCameraApp" + String.valueOf(System.currentTimeMillis()) + ".jpg";
            File file = new File(Environment.getExternalStorageDirectory()+"/pictures", imageName);
            fileUri = Uri.fromFile(file);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name

            startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

        }
4

2 に答える 2

2

私は同じ問題に直面しましたが、今は修正しました。お役に立てると思います。SD カードのディレクトリを変更すると、このコードは正常に動作すると思います。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_image_optimization);

    String dirname = Environment.getExternalStorageDirectory() + "/shahin/";

    File sddir = new File(dirname);
    if (!sddir.mkdirs()) {
        if (sddir.exists()) {
        } else {
            Toast.makeText(ImageOptimizationActivity.this, "Folder error", Toast.LENGTH_SHORT)
                    .show();
            return;
        }
    }

    try {
        Bitmap bitmap = null;
        File file = new File(Environment.getExternalStorageDirectory()
                + "/DCIM/101SHARP/rubon.jpg");
        try {
            bitmap = BitmapFactory.decodeStream(new FileInputStream(file));
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }

        FileOutputStream fos = new FileOutputStream(dirname + "output.jpg");
        bitmap.compress(CompressFormat.JPEG, 75, fos);

        fos.flush();
        fos.close();
    } catch (Exception e) {
        Log.e("MyLog", e.toString());
    }
}

}

于 2012-11-02T06:33:45.900 に答える
0

これを試して:

String root = Environment.getExternalStorageDirectory()
                    .toString();
            File myDir = new File(root + "/_images");
            myDir.mkdirs();
            Random generator = new Random();
            int n = 10000;
            n = generator.nextInt(n);
            String fname = "Image-" + n + ".jpg";
            file = new File(myDir, fname);
            Log.i(TAG, "" + file);
            if (file.exists())
                file.delete();
            try {
                FileOutputStream out = new FileOutputStream(file);
                bm.compress(Bitmap.CompressFormat.JPEG, 90, out);
                out.flush();
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

ここで、bm はビットマップ イメージです

于 2012-11-02T05:51:22.753 に答える