0

カメラから画像をアップロードするときにギャラリーとカメラから画像を取得すると、品質が低下しますが、ギャラリーの画像は実際の品質です

カメラから ここに画像の説明を入力

ギャラリーから ここに画像の説明を入力

カメラとギャラリーから画像をアップロードするコードは次のとおりです

カムから画像を取得する

    Intent in = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
 File out = Environment.getExternalStorageDirectory();
 String fileName=GetFileName().replace('.', ' ')+".png";
 out = new File(out, fileName); 
in.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));
 startActivityForResult(in, cameraIdNotSdCard);

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//from camera
    wb.loadUrl(sendUrl);

        if (requestCode == cameraIdNotSdCard) {
            if (data != null && resultCode == RESULT_OK ) {
                bm = (Bitmap) data.getExtras().get("data");

                int width = 350;
                int height = 400;
                if (HomePage.permistionArray.length > 4) {

                    width = Integer.valueOf(HomePage.permistionArray[3]);
                    height = Integer.valueOf(HomePage.permistionArray[4]);
                }

                // Log.d("ddddddddddddd", width+":"+height);

                Bitmap resizeBitmap = Bitmap.createScaledBitmap(bm, width,
                        height, true);

                    ByteArrayOutputStream boas = new ByteArrayOutputStream();
                // bm.compress(Bitmap.CompressFormat.PNG, 100, boas);

                resizeBitmap.compress(Bitmap.CompressFormat.JPEG  ,100, boas);

                byte[] b = boas.toByteArray();
                imageS = Base64.encodeToString(b, 0);

                // call custom class which class web service in background which
                // save image ..
                new imageSaveClass(getApplicationContext()).execute();

            }
        }
        // form gallery result
           if (requestCode == galleryRsultCode && resultCode == RESULT_OK
                    && data != null) {

            Uri selectedImage = data.getData();


            String[] filePathColum = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColum, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColum[0]);

            String picturePath = cursor.getString(columnIndex);

            Bitmap myBitmap = BitmapFactory
                    .decodeFile(picturePath);
            if(myBitmap!=null)
            {
                int width = 350;
                int height = 400;
                if (HomePage.permistionArray.length > 4) {

                    width = Integer.valueOf(HomePage.permistionArray[3]);
                    height = Integer.valueOf(HomePage.permistionArray[4]);
                } 

                // Log.d("ddddddddddddd", width+":"+height);

                Bitmap resizeBitmap = Bitmap.createScaledBitmap(myBitmap, width,
                        height, true);

                ByteArrayOutputStream boas = new ByteArrayOutputStream();
                // bm.compress(Bitmap.CompressFormat.PNG, 100, boas);

                resizeBitmap.compress(Bitmap.CompressFormat.PNG, 100, boas);

                byte[] b = boas.toByteArray();
                imageS = Base64.encodeToString(b, 0);

                // call custom class which class web service in background which
                // save image ..
                new imageSaveClass(getApplicationContext()).execute();
            }

        }

カメラから画像をアップロードするときにギャラリーとカメラから画像を取得すると、品質が低下しますが、ギャラリーの画像は実際の品質です

カメラの品質を向上させる方法

4

1 に答える 1

0

圧縮形式を変更してみてください。

カメラに使用しています:

 resizeBitmap.compress(Bitmap.CompressFormat.JPEG  ,100, boas);

ギャラリーの場合:

 resizeBitmap.compress(Bitmap.CompressFormat.PNG ,100, boas);

これも読んでください。

于 2013-11-11T12:08:51.800 に答える