0

私はこのようなカスタムリストビューを持っています. 私のアプリケーションでは、カメラを開いて写真をSDカードにキャプチャできます。キャプチャした写真を小さなイメージビューに表示したい。しかし、私は次のメッセージになりました:ビットマップが大きすぎてテクスチャにアップロードできません (2448x3264、最大 = 2048x204) どうすればそのような画像をイメージビューに表示できますか?

前もって感謝します

編集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 に答える