Android:実際のサイズで作成したフォルダに画像を保存する方法

作成したフォルダに実際のサイズで写真を保存したいこのために私はたくさんのコードを試しましたが、実際のサイズでギャラリーに保存されたすべての写真ですが、私の場所にこの写真を保存すると写真が圧縮されました。 その後、ギャラリーから自分のフォルダに写真をコピーして、実際のサイズの写真を取得しようとしました。この場合、写真はコッピングしていますが、実際のサイズではありません。再び圧縮されます。 カメラを開くには:

    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(
            Intent.createChooser(cameraIntent, "Select Picture"),
            CAMERA_REQUEST);

その後、 onActivityResult メソッドで、

try {
        if (requestCode == CAMERA_REQUEST) {
            Bitmap photo = (Bitmap) data.getExtras().get("data");

            if (photo != null) {
                imageView.setImageBitmap(photo);
            }

           //Image name

            final ContentResolver cr = getContentResolver();
            final String[] p1 = new String[] {
                    MediaStore.Images.ImageColumns._ID,
                    MediaStore.Images.ImageColumns.DATE_TAKEN };
            Cursor c1 = cr.query(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null,
                    null, p1[1] + " DESC");
            if (c1.moveToFirst()) {
                String uristringpic = "content://media/external/images/media/"
                        + c1.getInt(0);
                Uri newuri = Uri.parse(uristringpic);
               //Log.i("TAG", "newuri "+newuri);
                String snapName = getRealPathFromURI(newuri);

                Uri u = Uri.parse(snapName);

                File f = new File("" + u);
                String fileName = f.getName();

                editTextPhoto.setText(fileName);
                checkSelectedItem = true;

                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                photo.compress(CompressFormat.PNG, 0 /* ignored for PNG */,
                        bos);
                byte[] bitmapdata = bos.toByteArray();

               //Storing Image in new folder


//  StoreByteImage(mContext, bitmapdata, 100, fileName);


                copyImageFromGallery(newuri);






               //To appear images in created folder of Gallery dynamically
               //as soon as they
               //are captured.
                sendBroadcast(new Intent(
                        Intent.ACTION_MEDIA_MOUNTED,
                        Uri.parse("file://"
                                + Environment.getExternalStorageDirectory())));

               //Delete the image from the Gallery

                getContentResolver().delete(newuri, null, null);//for delete

            }
            c1.close();

        }
    } catch (NullPointerException e) {
        System.out.println("Error in creating Image." + e);

    } catch (Exception e) {
        System.out.println("Error in creating Image." + e);
    }

Image Form Galleryを自分のフォルダにコピーしました:

protected void copyImageFromGallery(Uri uri){

    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();
        if (sd.canWrite()) {
            String sourceImagePath= uri.toString();


            File sdImageMainDirectory = new File(
                    Environment.getExternalStorageDirectory() + "/pix/images");
                if (!sdImageMainDirectory.exists()) {
                    sdImageMainDirectory.mkdirs();
                }



            String destinationImagePath= Environment.getExternalStorageDirectory() + "/pix/images";
            File source= new File(data, souceImagePath);
            File destination= new File(sd, destinationImagePath);
            if (source.exists()) {
                FileChannel src = new FileInputStream(source).getChannel();
                FileChannel dst = new FileOutputStream(destination).getChannel();
                dst.transferFrom(src, 100, src.size());
                src.close();
                dst.close();
            }
    }} catch (Exception e) {}


    }

ここの写真は私のフォルダにコピーされますが、圧縮されます。

0

1 答え

cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT、outputFileUri); ここでoutputFile Uriは、保存するファイルの場所です。

0
追加された
以前はこのコードを使用しましたが、このコードでは写真を圧縮形式で保存しています。
追加された 著者 Vinit Vikash,
ここで私のEclipseは、 "EXTRA_QUALITYは解決できないか、フィールドではない"ことを示しています。 EXTRA_VIDEO_QUALITYは動画のためのものです。
追加された 著者 Vinit Vikash,
EXTRA_IMAGE_QUALITY eclipseの場合は同じエラーが返されます。
追加された 著者 Vinit Vikash,
OK ... Android Developersのサイトに表示されます...
追加された 著者 Vinit Vikash,
私は正確には分かりませんが、cameraIntent.putExtra(MediaStore.EXTRA_QUALITY、1)のようなものがあるはずです.1は高画質、低画質は0です。しかし確かではありません。それを一度チェックする
追加された 著者 Seshu Vinay,
EXTRA_IMAGE_QUALITYはどうですか?
追加された 著者 Seshu Vinay,
私はドンノ。私は決して使用しませんでした何かがそこにあるはずだと思った。 VIDEO_QUALITYがある場合は、IMAGE_QUALITYのために何かがあるはずです...
追加された 著者 Seshu Vinay,
MediaStore(Android Developers)のドキュメントを検索し、画質に関する余分な定数があるかどうかを確認する必要があります
追加された 著者 Seshu Vinay,