我如何理解位图照片是垂直还是水平?

时间:2014-01-29 07:36:51

标签: java android bitmap android-bitmap

我没有在google和stackoverflow上找到我真正需要的东西, 我想知道我刚从相机拍摄的照片是垂直的还是水平的, 代码:

path_img= ("image_url");   
Bitmap  photo = null ;
photo = BitmapFactory.decodeFile(path_img );
int imageHeight = photo.getHeight();
int imageWidth = photo.getWidth();

当我在手机上捕捉照片时图像高度和图像总是相同我的意思是如果我捕捉照片垂直或水平它总是960x1280,我想要水平照片尺寸是(宽度:960高度:1280)和垂直是(宽度) :1280身高:960) 感谢

2 个答案:

答案 0 :(得分:4)

使用ExifInterface获取方向如下:

File imageFile = new File(imagePath);

            ExifInterface exif = new ExifInterface(imageFile.getAbsolutePath());
                            int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);

            boolean isVertical = true ; 

            switch (orientation) {
                case ExifInterface.ORIENTATION_ROTATE_270:
                    isVertical = false ; 
                    break;
                case ExifInterface.ORIENTATION_ROTATE_90:
                    isVertical =false ; 
                    break;
            }

等等,以获取ExifInterface文档中常量所需的全部内容。

然后您可以尝试使用Picasso API执行以下操作:

int imageWidth , imageHeight = 0 ; 

if(isVertical ) {
imageWidth =1280;
imageHeight=960;
}else if (!isVertical ){
imageWidth =960;
imageHeight=1280;
}

Picasso.with(getActivity()) 
            .load(imageUrl) 
            .placeholder(R.drawable.placeholder) 
            .error(R.drawable.error) 
            .resize(imageWidth , imageHeight)
            .centerInside() 
            .into(imageView);

请给我一些反馈。

希望有所帮助。

答案 1 :(得分:0)

我想你可以对高度和宽度做一个简单的测试,如:

if(imageHeight > imageWidth){
    //Image is horizontal (according to your comments, horizontal photos are usually wider than the hight)
}
elseif(imageHeight > imageWidth){
    //Image is horizontal (again, according to your comments)
}