1

携帯のカメラからの画像をキャプチャし、2592x1936ビットマップに変換しました。イメージビューとして表示しましたmyImageVew.setImageBitmap(myBitmap);

このビットマップを表示した後、この画像(画像ビュー内)に対して何らかの操作を実行し、これを使用して保存します

Bitmap bitmap;
// frmCaptureThis is the root framelayout (this contains my imageview)
View v1 = frmCaptureThis; 
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);

saveImgToSDcard(bitmap);

これは私の画像をSDカードに保存していますが、2592x1936解像度ではなく、imageViewサイズ(つまり400X620)と同じサイズで画像を保存しています。元の解像度で画像を保存したい2592x1936

編集

インテントを介して画像を取得するための私のコードは次のとおりです

// ////////// Capture Button Handler//////////////////
    btnCapture.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            ContentValues values = new ContentValues();
            values.put(MediaStore.Images.Media.TITLE, "New Picture");
            values.put(MediaStore.Images.Media.DESCRIPTION,
                    "From your Camera");

            imageUri = getActivity().getContentResolver().insert(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION,
                    ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
            startActivityForResult(intent, REQUEST_OPEN_CAMERA);

        }
    });

そして、これが私のアクティビティ結果メソッドです

    @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    String imageurl = null;
    if (requestCode == REQUEST_OPEN_CAMERA
            && resultCode == Activity.RESULT_OK) {

        captureFlage = true;
        relTapToCapture.setEnabled(false);
        relHeader.setVisibility(View.INVISIBLE);
        frmCaptureThis.setVisibility(View.VISIBLE);
        btnCapture.setVisibility(View.VISIBLE);
        btnSave.setVisibility(View.VISIBLE);
        txtTapToCapture.setVisibility(View.INVISIBLE);

        try {
            thumbnail = MediaStore.Images.Media.getBitmap(getActivity()
                    .getContentResolver(), imageUri);
        } catch (FileNotFoundException e) {

        } catch (IOException e) {

        }

        imageurl = getRealPathFromURI(imageUri);

        if (thumbnail.getWidth() > thumbnail.getHeight()) {
            // Log.i("Orientation", "LandScape");

            // thumbnail = rotateImage_90(thumbnail);
            imgCaptured.setImageBitmap(thumbnail);

        } else {
            // Log.i("Orientation", "Portrait");
            imgCaptured.setImageBitmap(thumbnail);
        }

        File file = new File(imageurl);
        boolean deleted = file.delete();

    }
    super.onActivityResult(requestCode, resultCode, data);

}

これがSDカードに画像を保存する私の方法です

public void saveImgToSDcard(Bitmap bitmap) {

    Calendar cal = Calendar.getInstance();
    System.out.println("Current milliseconds since 13 Oct, 2008 are :"
            + cal.getTimeInMillis());

    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);

    File f = new File(Environment.getExternalStorageDirectory()
            + File.separator + "brandYourImage" + cal.getTimeInMillis()
            + ".jpg");
    try {
        f.createNewFile();
    } catch (IOException e) {

    }
    // write the bytes in file
    FileOutputStream fo = null;
    try {
        fo = new FileOutputStream(f);
    } catch (FileNotFoundException e) {

    }
    try {
        fo.write(bytes.toByteArray());
    } catch (IOException e) {

    }

    // remember close de FileOutput
    try {
        fo.close();
        Toast.makeText(getActivity(), "Saved Successfully",
                Toast.LENGTH_SHORT).show();
    } catch (IOException e) {

    }

}
4

0 に答える 0