1

ギャラリーから画像をインポートする Android アプリケーションがあります。すべての画像で正常に機能していますが、サイズが 1.5 MB を超える一部の画像では向きが変更されています。その申請書の画像を添付しました。私はこのコードを使用しています。

    newImage=(ImageView)findViewById(R.id.newImage);
    imagePath = getIntent().getStringExtra("ImagePath");
    try {
            ExifInterface exif = new ExifInterface(imagePath);
            orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

try{
            BitmapFactory.Options options=new BitmapFactory.Options();
            options.inJustDecodeBounds=true;
            InputStream is=new FileInputStream(new File(imagePath) );

            Display display = getWindowManager().getDefaultDisplay();
             final Point point = new Point();
                try {
                    display.getSize(point);
                } catch (java.lang.NoSuchMethodError ignore) { // Older device
                    point.x = display.getWidth();
                    point.y = display.getHeight();
                }

            int scrWidth = point.x;
            int scrHeight = point.y;
            originalBitmap=BitmapFactory.decodeStream(is,null,options);
            int imageWidth = options.outWidth;
            int imageHeight = options.outHeight;


            if(imageHeight>imageWidth){
                int newWidth=(scrWidth/2);
                int newHeight=(int)((float)imageHeight*((float)newWidth/(float)imageWidth));
                originalBitmap=BitmapLoader.loadBitmap(imagePath, newWidth, newHeight);
            }else{
                int newWidth=(scrWidth/2);
                //int newHeight=imageHeight*(imageWidth/newWidth);
                int newHeight=(int)((float)imageHeight*((float)imageWidth/(float)newWidth));

                originalBitmap=BitmapLoader.loadBitmap(imagePath, newWidth, newHeight);
            }

            is.close();


            //originalBitmap= Bitmap.createBitmap(originalBitmap, 0, 0, originalBitmap.getWidth(), originalBitmap.getHeight(), matrix, true);
            newBitmap=originalBitmap;

            options.inJustDecodeBounds=true;

            temp=BitmapLoader.loadBitmap(imagePath, 1200, 1200);
        }
        catch (Exception e) {
            // TODO: handle exception
        }
        if(originalBitmap!=null)
            //originalImage.setImageBitmap(originalBitmap);

        if(newBitmap!=null)
            newImage.setImageBitmap(newBitmap);
    }

画像

4

0 に答える 0