Android 创建缩放位图会导致图像无效
我创建了一个函数,可以将位图直接缩放到特定的表面区域。函数首先获取位图的宽度和高度,然后查找最接近所需大小的样本大小。最后,将图像缩放到精确大小。这是我能找到的唯一解码缩放位图的方法。问题是从BitmapFactory.createScaledBitmap(src,width,height,filter)返回的位图的宽度和高度始终为-1。我已经实现了使用createScaledBitmap()方法的其他函数,但没有发现此错误,我找不到创建缩放位图会产生无效输出的任何原因。我还发现,如果我创建一个可变的图像位图副本,会导致相同的错误。谢谢Android 创建缩放位图会导致图像无效,android,image,bitmap,Android,Image,Bitmap,我创建了一个函数,可以将位图直接缩放到特定的表面区域。函数首先获取位图的宽度和高度,然后查找最接近所需大小的样本大小。最后,将图像缩放到精确大小。这是我能找到的唯一解码缩放位图的方法。问题是从BitmapFactory.createScaledBitmap(src,width,height,filter)返回的位图的宽度和高度始终为-1。我已经实现了使用createScaledBitmap()方法的其他函数,但没有发现此错误,我找不到创建缩放位图会产生无效输出的任何原因。我还发现,如果我创建一个
public static Bitmap load_scaled_image( String file_name, int area) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(file_name, options);
double ratio = (float)options.outWidth / (float)options.outHeight;
int width, height;
if( options.outWidth > options.outHeight ) {
width = (int)Math.sqrt(area/ratio);
height = (int)(width*ratio);
}
else {
height = (int)Math.sqrt(area/ratio);
width = (int)(height*ratio);
}
BitmapFactory.Options new_options = new BitmapFactory.Options();
new_options.inSampleSize = Math.max( (options.outWidth/width), (options.outHeight/height) );
Bitmap image = BitmapFactory.decodeFile(file_name, new_options);
return Bitmap.createScaledBitmap(image, width, height, true);
}
我添加了这个功能,可以将大型相机图像缩放到特定数量的百万像素。因此,一个典型的传入区域将是100万像素的1000000。解码后的相机图像的外径为1952,外径为3264。然后我计算这个比率,这样我就可以和缩放图像保持相同的高宽比,在这种情况下,这个比率是0.598。。。利用这个比率和新的表面积,我可以找到新的宽度是773,高度是1293。773x1293=999489,约为100万像素。接下来,我计算要解码新图像的样本大小,在这种情况下,样本大小为4,图像解码为976x1632。所以我传入的宽度是773,高度是1293。我遇到了类似的问题(缩放位图的高度和宽度为-1)。 遵循此stackOverflow线程: 调用函数时,我尝试使用同一位图两次:
imageBitmap = Bitmap.createScaledBitmap(imageBitmap, THUMBNAIL_SIZE,
THUMBNAIL_SIZE, false);
出于某种原因,这解决了我的问题,也许也解决了你的问题。我也遇到了类似的问题(缩放位图的高度和宽度为-1)。 遵循此stackOverflow线程: 调用函数时,我尝试使用同一位图两次:
imageBitmap = Bitmap.createScaledBitmap(imageBitmap, THUMBNAIL_SIZE,
THUMBNAIL_SIZE, false);
出于某种原因,这解决了我的问题,也许也解决了你的问题。inSampleSize和宽度与高度的典型值是什么?inSampleSize和宽度与高度的典型值是什么?