-2

我在 Android 应用程序中工作,但我遇到了问题,当我从相机获取图像时,我在 imageview 中显示该图像,但我还需要显示与缩略图相同的图像。我在这里检查了一个应用程序是链接

这是图像:

在此处输入图像描述

4

2 回答 2

1

使用以下方法获取缩略图。

当您有图像的“路径”时,此方法很有用。

/**
 * Create a thumb of given argument size
 * 
 * @param selectedImagePath
 *            : String value indicate path of Image
 * @param thumbWidth
 *            : Required width of Thumb
 * @param thumbHeight
 *            : required height of Thumb
 * @return Bitmap : Resultant bitmap
 */
public static Bitmap createThumb(String selectedImagePath, int thumbWidth,
        int thumbHeight) {
    BitmapFactory.Options options = new BitmapFactory.Options();

    // Decode weakReferenceBitmap with inSampleSize set
    options.inJustDecodeBounds = true;

    BitmapFactory.decodeFile(selectedImagePath, options);

    final int height = options.outHeight;
    final int width = options.outWidth;

    int inSampleSize = 1;

    if (height > thumbHeight || width > thumbWidth) {
        if (width > height) {
            inSampleSize = Math.round((float) height / (float) thumbHeight);
        } else {
            inSampleSize = Math.round((float) width / (float) thumbWidth);
        }
    }

    options.inJustDecodeBounds = false;
    options.inSampleSize = inSampleSize;

    return BitmapFactory.decodeFile(selectedImagePath, options);
}

要使用这种方法,

createThumb("path of image",100,100);

编辑

当您有图像的位图时使用此方法。

public static Bitmap createThumb(Bitmap sourceBitmap, int thumbWidth,int thumbHeight) {
    return Bitmap.createScaledBitmap(sourceBitmap, thumbWidth, thumbHeight,true);
}

使用这种方法

createThumb(editedImage, 100, 100);
于 2013-09-02T10:20:24.900 回答
0

试试这个方法会创建你想要大小的缩略图,也会保持纵横比和缩放

public Bitmap crateThumbNail(String imagePath,int size) {
        try {
            // Decode image size
            BitmapFactory.Options o = new BitmapFactory.Options();
            o.inJustDecodeBounds = true;
            BitmapFactory.decodeFile(imagePath, o);
            // The new size we want to scale to
            final int REQUIRED_SIZE = size;

            // Find the correct scale value. It should be the power of 2.
            int scale = 1;
            while (o.outWidth / scale / 2 >= REQUIRED_SIZE && o.outHeight / scale / 2 >= REQUIRED_SIZE)
                scale *= 2;

            // Decode with inSampleSize
            BitmapFactory.Options o2 = new BitmapFactory.Options();
            o2.inSampleSize = scale;
            return BitmapFactory.decodeFile(imagePath, o2);
        } catch (Throwable e) {
            e.printStackTrace();
        }
        return null;

    }
于 2013-09-02T10:19:06.397 回答