以缩略图形式获取图像

时间:2013-09-02 10:12:55

标签: android image thumbnails

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

这是图片:

enter image description here

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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;

    }