0

我有一个像这样的自定义列表视图。在我的应用程序中,我可以打开相机并将照片拍摄到 SD 卡上。我想在小图像视图中显示拍摄的照片。但我收到以下消息:位图太大而无法上传到纹理中(2448x3264,max=2048x204) 我如何在图像视图中显示这样的图像,例如布局宽度/高度为 90x90dip 和 50X50dip?

提前致谢

编辑1:

cursor = myDBHandler.getAllDifferentNames1();

    String[] dbColm = new String[] {"n", "d", "p"};

    int[] toList = new int[] {R.id.txt_name, R.id.date, R.id.list_userImage};

    SimpleCursorAdapter myCursorAdapter 
            = new SimpleCursorAdapter
                        (this, R.layout.listrow, cursor, dbColm , toList );

    mainList.setAdapter(myCursorAdapter);
4

1 回答 1

2

您可以使用Bitmap.createScaledBitmap()缩放图像。在这里,我给你一个程序......按照这个......我想你会摆脱你的问题。

private Bitmap scaleImage(Bitmap bitmap) {
    //required image width and height
    int reqImageWidth = 90; //as you mentioned
    int reqImageHeight = 90; //as you mentioned

    /*Different device has different display density. If you want to show your  
     * image with same layout_width and layout_height then you should multiply   
     *something with yourrequired width and height to bring your image in balance.*/
    float multiplier = getMultiplierFromDeviceDensity();

    Bitmap.createScaledBitmap( bitmap, (int) (reqImageWidth * multiplier),
                              (int) (reqImageHeight * multiplier), false);
}

private float getMultiplierFromDeviceDensity() {

    int d = mContext.getResources().getDisplayMetrics().densityDpi;
    float multiplier = 0f;
    switch (d) {
    case DisplayMetrics.DENSITY_LOW:
        multiplier = 0.8f;
        break;
    case DisplayMetrics.DENSITY_MEDIUM:
        multiplier = 1.0f;
        break;
    case DisplayMetrics.DENSITY_HIGH:
        multiplier = 1.2f;
        break;
    case DisplayMetrics.DENSITY_XHIGH:
        multiplier = 1.5f;
        break;
    case DisplayMetrics.DENSITY_XXHIGH:
        multiplier = 2.0f;
        break;
    }
    return multiplier;
}
于 2014-02-04T10:10:32.483 回答