Joh*_*n F 7 android resize image-resizing universal-image-loader
我成功地将通用图像加载程序库(1.8.3版本)应用到我的应用程序,我正在尝试调整图像大小,然后在gridview项目中显示它(因为有时图像太大而无法将其缓存在内存中.)
这是我正在尝试的:
...
BitmapFactory.Options resizeOptions = new BitmapFactory.Options();
resizeOptions.inSampleSize = 3; // decrease size 3 times
resizeOptions.inScaled = true;
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.blank)
.showImageForEmptyUri(R.drawable.no_image)
.cacheInMemory()
.cacheOnDisc()
.decodingOptions(resizeOptions)
.build();
...
Run Code Online (Sandbox Code Playgroud)
由于某种原因,此代码不会使图像缩小3倍.
有人有更好的方法来按照指定的密度调整图像大小吗?
nos*_*a13 22
认真阅读Java文档:
Options.inSampleSize传入期权将不予考虑.库根据imageScaleType(...)选项计算最合适的样本大小.
另请查看ImageSizeUtil.defineTargetSizeForView(ImageView imageView, int maxImageWidth, int maxImageHeight)哪个定义了图像的目标大小:
大小由目标视图参数,配置参数或设备显示尺寸定义.大小计算算法:
- 获取实际绘制的
getWidth()和getHeight()视图.如果尚未绘制视图,请转到步骤#2.- 得到
layout_width和layout_height.如果它们都没有确切的值,那么转到步骤#3.- 得到
maxWidth和maxHeight.如果未设置它们,则转到步骤#4.- 获取
maxImageWidthparam(maxImageWidthForMemoryCache)和maxImageHeightparam(maxImageHeightForMemoryCache).如果两者都未设置(等于0),则转到步骤#5.- 获取设备屏幕尺寸.
UIL根据imageScaleType和targetSize(以及ImageView'scaleType)定义结果位图大小.
小智 14
试试这个:
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.blank)
.showImageForEmptyUri(R.drawable.no_image)
.cacheInMemory()
.cacheOnDisc()
.decodingOptions(resizeOptions)
.postProcessor(new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bmp) {
return Bitmap.createScaledBitmap(bmp, 300, 300, false);
}
})
.build();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31496 次 |
| 最近记录: |