我试图使用Helper Class来获得更清晰的代码。但我现在有点困惑。让我先向您展示我的代码:
这是我的助手类代码(用于缩放位图的代码):
public class Helper {
public static void decodeFile(String filePath) {
// Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeFile(filePath, o);
// The new size we want to scale to
final int REQUIRED_SIZE = 2048;
int width_tmp = o.outWidth, height_tmp = o.outHeight;
int scale = 1;
while (true) {
if (width_tmp < REQUIRED_SIZE && height_tmp < REQUIRED_SIZE)
break;
width_tmp /= 2;
height_tmp /= 2;
scale *= 2;
}
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
Bitmap bmp = BitmapFactory.decodeFile(filePath, o2);
}
这就是我想要使用的功能:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == GALLERY_PICTURE) {
if (resultCode == RESULT_OK) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
Helper.decodeFile(filePath);
img_logo.setImageBitmap(bmp);
settings = getSharedPreferences("pref", 0);
Editor prefsEditor = settings.edit();
prefsEditor.putString("photo1", filePath);
prefsEditor.commit();
}
但我的问题是,当它在我的imageview(img_logo)中显示位图时,它不会显示照片,只显示一个空白页。
我知道问题在于最后一行助手(bmp在哪里),但我不知道该怎么做。
答案 0 :(得分:1)
您目前没有返回助手类加载的位图 - 您要在此行上创建它:
Bitmap bmp = BitmapFactory.decodeFile(filePath, o2);
然后功能才退出,所以位图被遗忘了。您需要将其返回到调用它的函数,以便它可以显示在应用程序中:
bmp = Helper.decodeFile(filePath);
img_logo.setImageBitmap(bmp);