当前位置: 首页 > 面试题库 >

捕获的图像始终显示风景,并且setRotate无法解析

谷星文
2023-03-14
问题内容

有相当多的类似的题目和问题在这里,我跟着这个。但是我得到了错误。

我的密码

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == RESULT_OK) {
        if (requestCode == 1) {
            //h=0;
            File f = new File(Environment.getExternalStorageDirectory().toString());
            for (File temp : f.listFiles()) {
                if (temp.getName().equals("temp.jpg")) {
                    f = temp;
                    File photo = new File(Environment.getExternalStorageDirectory(), "temp.jpg");
                    //pic = photo;
                    break;
                }
            }

            try {
                Bitmap bitmap;
                BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
                bitmapOptions.inJustDecodeBounds = false;
                bitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565;
                bitmapOptions.inDither = true;
                bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(), bitmapOptions);
                Global.img = bitmap;

                b.setImageBitmap(bitmap);
                String path = android.os.Environment.getExternalStorageDirectory() + File.separator + "Phoenix" + File.separator + "default";
                //p = path;
                f.delete();
                OutputStream outFile = null;
                File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg");
                try {

                    outFile = new FileOutputStream(file);
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 85, outFile);
                    //pic=file;
                    outFile.flush();
                    outFile.close();


                } catch (FileNotFoundException e) {
                    e.printStackTrace();

                } catch (IOException e) {
                    e.printStackTrace();

                } catch (Exception e) {
                    e.printStackTrace();
                }

            } catch (Exception e) {
                e.printStackTrace();

            }

        } else if (requestCode == 2) {

            Uri selectedImage = data.getData();
            // h=1;
            //imgui = selectedImage;
            String[] filePath = {MediaStore.Images.Media.DATA};
            Cursor c = getContentResolver().query(selectedImage, filePath, null, null, null);
            c.moveToFirst();
            int columnIndex = c.getColumnIndex(filePath[0]);
            String picturePath = c.getString(columnIndex);
            c.close();
            Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath));
            Log.w("path of image ******", picturePath + "");
            b.setImageBitmap(thumbnail);
        }


    }
    else
    {
        finish();
    }

}

遵循本教程之后,我将代码更改为

  try {
             Bitmap bitmap;
             BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
             bitmapOptions.inJustDecodeBounds = false;
             bitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565;
             bitmapOptions.inDither = true;
             bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(), bitmapOptions);
              BitmapFactory.Options opts = new BitmapFactory.Options();
              Bitmap bm = BitmapFactory.decodeFile(f.getAbsolutePath(), opts);
              ExifInterface exif = new ExifInterface(f.getAbsolutePath());
              String orientString = exif.getAttribute(ExifInterface.TAG_ORIENTATION);
              int orientation = orientString != null ? Integer.parseInt(orientString) :  ExifInterface.ORIENTATION_NORMAL;
               int rotationAngle = 0;
               if (orientation == ExifInterface.ORIENTATION_ROTATE_90) rotationAngle = 90;
               if (orientation == ExifInterface.ORIENTATION_ROTATE_180) rotationAngle = 180;
               if (orientation == ExifInterface.ORIENTATION_ROTATE_270) rotationAngle = 270;
               Matrix matrix = new Matrix();
               matrix.setRotate(rotationAngle, (float) bm.getWidth() / 2, (float) bm.getHeight() / 2);
               Bitmap rotatedBitmap = Bitmap.createBitmap(bm, 0, 0, bitmapOptions.outWidth, bitmapOptions.outHeight, matrix, true);
               Global.img = bitmap;
               b.setImageBitmap(bitmap);
               String path = android.os.Environment
                          .getExternalStorageDirectory()
                           + File.separator
                           + "Phoenix" + File.separator + "default";
                    //p = path;

                    f.delete();

                    OutputStream outFile = null;

                    File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg");
  1. 无法解析matrix.setRotate中的setRotate。
  2. 我在下面显示一条红线(bm, 0, 0, bitmapOptions.outWidth, bitmapOptions.outHeight, matrix, true);(无法解析方法createBitmap)

*编辑*

在我导入android.graphics.Matrix而不是android.opengl.Matrix,应用程序崩溃之后。

LogCat错误

  Process: com.example.project.project, PID: 13045
    java.lang.OutOfMemoryError
            at android.graphics.Bitmap.nativeCreate(Native Method)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:928)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:901)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:833)
            at com.example.project.project.ImageFitScreen.onActivityResult(ImageFitScreen.java:236)
            at android.app.Activity.dispatchActivityResult(Activity.java:5643)

这是第236行

 Bitmap rotatedBitmap = Bitmap.createBitmap(bm, 0, 0, bitmapOptions.outWidth, bitmapOptions.outHeight, matrix, true);

问题答案:

更改为此位图rotationBitmap =Bitmap.createBitmap(bm,0,0,bm.getWidth(),bm.getHeight(),matrix,true);



 类似资料:
  • 这里有很多类似的话题和问题,我将遵循这些。但我有一个错误。 我的代码 在遵循教程之后,我将代码更改为 在矩阵中设置旋转。无法解决setRotate 我在 应用程序崩溃。 LogCat错误 这是236号线

  • 我总是看到很多空白,如果我做风景或肖像在我的图像。我确实需要可滑动的,所以不想调整代码太多,但我确实希望它看起来可以表示 我的代码有问题吗? 我确实添加了一张图片这是在风景和肖像模式下发生的

  • Mac OSX Netbeans JAVA 目标:21点程序…我正在尝试将扑克牌的图像图标显示在JLabel中 逻辑:我创建了一些CARD对象,用一个方法返回与之相关的imageIcon。在我的主GUI类中,如果我创建新的imageIcon来指定文件位置,它就会工作 注释掉的行工作正常,显示imageIcon图像,但是当我使用card1.getImage()方法时,图像不显示。方法很简单- 此外,

  • 我是新的Android和建立一个小应用程序,从相机拍照,并保存到画廊。 下面是捕获图像的函数。 这是我们的主要活动。xml 当图像被捕获时,我想在另一个活动(页面)上显示图像,而不是在具有捕获图像按钮的同一活动上。如何做到这一点。 提前谢谢

  • 问题内容: 这是一个非常简单的程序,我已尽力而为,但JPanel并未提供背景图片。我只希望面板上有一个简单的背景图像。 这是我的代码: 提前致谢 问题答案: 更换 与

  • 问题内容: 我是一名PHP程序员,正在尝试学习JAVA。我在尝试解析json文件时遇到问题。已经三天了..对此感到头疼。我正在创建一个Android应用程序(使用JAVA)来解析json文件。这是示例json数据(http://metalgearrisingguide.com/samplejson.json)以及如何显示图像? 当我尝试时,我的logcat出现以下错误,模拟器上没有任何显示 这是我