繁体   English   中英

缩放后我的位图在Android中旋转

[英]My bitmap gets rotated in Android after scaling it

这是我的代码。 这个问题与这个问题有些相关: 尝试缩小Android中的位图无法正常工作

我注释掉了options.inSampleSize ,我仍然得到了旋转(似乎是逆时针旋转90度)。 从Google文档看,这似乎是按比例缩小图像的相当简单的方法,我不确定如何获得旋转的图像。

Bitmap myBitmap = null;
        @Override
        protected byte[] doInBackground(Object... params) {


            final BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = true;
            //myImageByteArray is 4016 wide
            myBitmap = BitmapFactory.decodeByteArray(myImageByteArray, 0, myImageByteArray.length, options);
            if (options.outHeight > options.outWidth) {
                //options.inSampleSize = calculateInSampleSize(options, 640, 960);
            } else {
                //options.inSampleSize = calculateInSampleSize(options, 960, 640);
            }

            options.inJustDecodeBounds = false;

            //myImageByteArray is 4016 wide
            myBitmap = BitmapFactory.decodeByteArray(myImageByteArray, 0, myImageByteArray.length, options);

            //This log statement outputs around 1000 now. 
            Log.d("bitmap", myBitmap.getWidth()+"");
            ByteArrayOutputStream bAOS = new ByteArrayOutputStream();
            myBitmap.compress(CompressFormat.JPEG, 50, bAOS);

}

byte []最初来自Commonsware CWAC相机库 ,我尝试查看一下: Android缩小相机图片的大小

更新:

我已经开始删除更多的代码,以试图使这种旋转的来源更加明显。 我已经缩小到这个范围。 (此代码仍会导致旋转)

Bitmap myBitmap = null;
        @Override
        protected byte[] doInBackground(Object... params) {
            final BitmapFactory.Options options = new BitmapFactory.Options();

            myBitmap = BitmapFactory.decodeByteArray(myImageByteArray, 0, myImageByteArray.length, options);      
            ByteArrayOutputStream bAOS = new ByteArrayOutputStream();
            myBitmap.compress(CompressFormat.JPEG, 50, bAOS);

}

这里的问题很可能是图像本身并没有旋转,而是图像正在旋转显示,并且您的转换正在清除(或至少不继承)操作系统用于显示图像的元数据方向正确。 您对此无能为力,因为操作系统不会将数据放入映像本身

如果不是这种情况,那么您遇到的是字节顺序问题。 一种格式是从左到右提供数据,另一种格式是从上到下。 您需要重新排序字节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM