我有一个代码,我在其中调用图库来选择我在imageview中显示的图像。这样可以正常工作并保持纵横比。 问题是图像尺寸大于2048 x 2048时 在这种情况下,我正在使用此代码:
uriIsNowAbitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver() selectedImageUri);
//... int height = uriIsNowAbitmap.getHeight(); int width = uriIsNowAbitmap.getWidth(); if ((width>=2048)||(height>=2048)) { int newheight = height/10; // height in pixels int newwidth = width/10; // width in pixels Bitmap avatarScaled = Bitmap.createScaledBitmap(uriIsNowAbitmap, newwidth, newheight, true); previewNewAvatar.setImageBitmap(avatarScaled);
}
也可正常工作,但有问题。图像不是旋转横向显示的类型
试图解释,我把这个例子。这是画廊的图片:
当我选择图片并将其分配给图像时,旋转显示:
我不明白为什么。我已经尝试了一千种方法并阅读了大量有关调整大小的信息,我已阅读本网站的线程和示例代码(Android: high quality image resizing / scaling)等等......但没有任何帮助。 目的是以这种方式展示...... 用photoshop 制作它:)
我感谢任何帮助,花了好几个小时试图解决它
此致
答案 0 :(得分:0)
首先,您必须检测方向更改,当您检测到横向方向的更改时,您只需相应地旋转位图。您必须将Bitmap avatarScaled声明为全局变量才能在下面的onConfigurationChanged()方法中访问它:
使用Activity的onConfigurationChanged方法检测方向的变化。请参阅以下代码:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Matrix matrix = new Matrix();
matrix.postRotate(90);
Bitmap rotated = Bitmap.createBitmap(avatarScaled, 0, 0, avatarScaled.getWidth(),
avatarScaled.getHeight(), matrix, true);
previewNewAvatar.setImageBitmap(rotated);
}
}
您还必须编辑清单文件中的相应元素以包含android:configChanges只需看下面的代码:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">