从Android应用程序中的相机拍摄时,图像质量已丢失

时间:2013-11-11 08:58:08

标签: android image

我从画廊和相机拍摄图像 当我从相机上传图像时它失去了质量 但画廊图像具有实际质量

来自相机 enter image description here

来自画廊 enter image description here

这是我从相机和图库上传图片的代码

从cam获取图像

    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();
            }

        }

我从画廊和相机拍摄图像 当我从相机上传图像时它失去了质量 但画廊图像具有实际质量

我如何通过相机提高质量

1 个答案:

答案 0 :(得分:0)

尝试更改压缩格式。

您正在使用相机:

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

对于Galery:

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

另请阅读this