当我从图库中选择图像并在ImageView中显示图像时,一些图像会自动旋转90度。
如何禁用此功能?
代码:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
m_galleryIntent = new Intent();
m_galleryIntent.setType("image/*");
m_galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
m_ProfileImageView = (ImageView) findViewById(R.id.imageView1);
m_ProfileImageView.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
startActivityForResult(Intent.createChooser(m_galleryIntent, "Select Picture"),1);
}
});
}
public Bitmap readBitmap(Uri selectedImage)
{
Bitmap bm = null;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 5;
AssetFileDescriptor fileDescriptor =null;
try
{
fileDescriptor = this.getContentResolver().openAssetFileDescriptor(selectedImage,"r");
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
finally
{
try
{
bm = BitmapFactory.decodeFileDescriptor(fileDescriptor.getFileDescriptor(), null, options);
fileDescriptor.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
return bm;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode == RESULT_OK)
{
if (requestCode == 1)
{
try
{
Uri imageURI = data.getData();
bitmapFromFile = readBitmap(imageURI);
m_ProfileImageView.setImageBitmap(bitmapFromFile);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
答案 0 :(得分:4)
您应自行旋转此图像。从内容提供商处读取图像方向值,特别是Images.Media.ORIENTATION字段并相应地旋转它。
此图像以旋转方式存储。旋转角度保存在媒体数据库中。
public int getOrientation(Uri selectedImage) {
int orientation = 0;
final String[] projection = new String[]{MediaStore.Images.Media.ORIENTATION};
final Cursor cursor = context.getContentResolver().query(selectedImage, projection, null, null, null);
if(cursor != null) {
final int orientationColumnIndex = cursor.getColumnIndex(MediaStore.Images.Media.ORIENTATION);
if(cursor.moveToFirst()) {
orientation = cursor.isNull(orientationColumnIndex) ? 0 : cursor.getInt(orientationColumnIndex);
}
cursor.close();
}
return orientation;
}
例如,您可以使用ImageView.setImageMatrix()
旋转图像。