我在 Android 应用程序中工作,但我遇到了问题,当我从相机获取图像时,我在 imageview 中显示该图像,但我还需要显示与缩略图相同的图像。我在这里检查了一个应用程序是链接
这是图像:
我在 Android 应用程序中工作,但我遇到了问题,当我从相机获取图像时,我在 imageview 中显示该图像,但我还需要显示与缩略图相同的图像。我在这里检查了一个应用程序是链接
这是图像:
使用以下方法获取缩略图。
当您有图像的“路径”时,此方法很有用。
/**
* 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);
试试这个方法会创建你想要大小的缩略图,也会保持纵横比和缩放
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;
}