Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android如何调整相机图片的大小并将其保存为位图,以便在活动中的固定矩形区域中显示_Android_Bitmap - Fatal编程技术网

Android如何调整相机图片的大小并将其保存为位图,以便在活动中的固定矩形区域中显示

Android如何调整相机图片的大小并将其保存为位图,以便在活动中的固定矩形区域中显示,android,bitmap,Android,Bitmap,我有一个可以拍摄项目照片的应用程序,这些项目必须可以在ActivityScreen的某个固定区域中查看。问题是活动中显示的图片来自保存的位图,与我预览和拍摄的图片完全不同。它看起来放大了,显示了我在拍摄照片时在预览中甚至没有看到的区域:以下是关键代码行 图像捕获: surfHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); captImageView = (ImageView)findViewById(R.id.CamImageVi

我有一个可以拍摄项目照片的应用程序,这些项目必须可以在ActivityScreen的某个固定区域中查看。问题是活动中显示的图片来自保存的位图,与我预览和拍摄的图片完全不同。它看起来放大了,显示了我在拍摄照片时在预览中甚至没有看到的区域:以下是关键代码行

图像捕获

surfHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

captImageView = (ImageView)findViewById(R.id.CamImageView);

byte [] photoData;
Camera cam;
SurfaceHolder surfHolder;
SurfaceView surfView;


Camera.PictureCallback cback;

cback = new Camera.PictureCallback() {

        @Override
        public void onPictureTaken(byte[] data, Camera camera) {

                        final int length = data.length;
                opts.inSampleSize = 4;
            final BitmapFactory.Options opts = new BitmapFactory.Options();    
            Bitmap bMap = null;

            try {

                    bMap = BitmapFactory.decodeByteArray(data, 0, length, opts);

            } catch(Exception e) {

            }catch(OutOfMemoryError e) {

            } 

            captImageView.setImageBitmap(bitmap);

            if(bMap==null) {
               cam.startPreview();
            } else {
                             savePhotoButton.setVisibility(ImageView.VISIBLE);
                 takePhotoButton.setVisibility(ImageView.INVISIBLE);
                 photoData = data;
            }
        }
 }
captImageView.setImageBitmap(null);
// SAVE THE PICTURE   THIS SAVES PICTURE IN WRONG SIZE.  LOOKS LIKED ZOOMED IN NOT WHAT WAS PREVIEWED!!!


           public void photoSave(byte[] data) {

               final int length = data.length;
           final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 2;

                try {
        Bitmap bMap = BitmapFactory.decodeByteArray(data, 0, length, options);
         int quality = 75;
             File file = new File(getDir(), fname);
         fileOutputStream = new FileOutputStream(file);
         bMap.compress(CompressFormat.JPEG, quality, fileOutputStream);
        }catch(FileNotFoundException e) {

        }  catch(OutOfMemoryError e) {} }
图像保存

surfHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

captImageView = (ImageView)findViewById(R.id.CamImageView);

byte [] photoData;
Camera cam;
SurfaceHolder surfHolder;
SurfaceView surfView;


Camera.PictureCallback cback;

cback = new Camera.PictureCallback() {

        @Override
        public void onPictureTaken(byte[] data, Camera camera) {

                        final int length = data.length;
                opts.inSampleSize = 4;
            final BitmapFactory.Options opts = new BitmapFactory.Options();    
            Bitmap bMap = null;

            try {

                    bMap = BitmapFactory.decodeByteArray(data, 0, length, opts);

            } catch(Exception e) {

            }catch(OutOfMemoryError e) {

            } 

            captImageView.setImageBitmap(bitmap);

            if(bMap==null) {
               cam.startPreview();
            } else {
                             savePhotoButton.setVisibility(ImageView.VISIBLE);
                 takePhotoButton.setVisibility(ImageView.INVISIBLE);
                 photoData = data;
            }
        }
 }
captImageView.setImageBitmap(null);
// SAVE THE PICTURE   THIS SAVES PICTURE IN WRONG SIZE.  LOOKS LIKED ZOOMED IN NOT WHAT WAS PREVIEWED!!!


           public void photoSave(byte[] data) {

               final int length = data.length;
           final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 2;

                try {
        Bitmap bMap = BitmapFactory.decodeByteArray(data, 0, length, options);
         int quality = 75;
             File file = new File(getDir(), fname);
         fileOutputStream = new FileOutputStream(file);
         bMap.compress(CompressFormat.JPEG, quality, fileOutputStream);
        }catch(FileNotFoundException e) {

        }  catch(OutOfMemoryError e) {} }
图像显示为可在活动中绘制 “不工作”在拍摄照片时,将图像显示为缩放或预览中根本看不到的部分

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = inSampSize;
Bitmap bitmap = BitmapFactory.decodeFile(path, options);

Drawable drawable = bitmap;
ImageView pictureView = (ImageView)findViewById(R.id.pictureViewer);
pictureView.setImageDrawable(drawable);

好啊谢谢,我会记得我想知道的问题是我是否只需要使用相机支持的高度/宽度?这可能是问题所在吗?谢谢。谢谢,我会记得我想知道的问题是我是否只需要使用相机支持的高度/宽度?这可能是问题所在吗?谢谢