computeSampleSize
来源:互联网 发布:苹果平板怎么淘宝开店 编辑:程序博客网 时间:2024/05/14 20:49
转自:http://my.csdn.net/zljk000/code/detail/18212
computeSampleSize方法,返回一个合适的options.inSampleSize值
Java代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
public
class
Util {
/*
* Compute the sample size as a function of minSideLength
* and maxNumOfPixels.
* minSideLength is used to specify that minimal width or height of a
* bitmap.
* maxNumOfPixels is used to specify the maximal size in pixels that is
* tolerable in terms of memory usage.
*
* The function returns a sample size based on the constraints.
* Both size and minSideLength can be passed in as IImage.UNCONSTRAINED,
* which indicates no care of the corresponding constraint.
* The functions prefers returning a sample size that
* generates a smaller bitmap, unless minSideLength = IImage.UNCONSTRAINED.
*
* Also, the function rounds up the sample size to a power of 2 or multiple
* of 8 because BitmapFactory only honors sample size this way.
* For example, BitmapFactory downsamples an image by 2 even though the
* request is 3. So we round up the sample size to avoid OOM.
*/
public
static
int
computeSampleSize(BitmapFactory.Options options,
int
minSideLength,
int
maxNumOfPixels) {
int
initialSize = computeInitialSampleSize(options, minSideLength,
maxNumOfPixels);
int
roundedSize;
if
(initialSize <=
8
) {
roundedSize =
1
;
while
(roundedSize < initialSize) {
roundedSize <<=
1
;
}
}
else
{
roundedSize = (initialSize +
7
) /
8
*
8
;
}
return
roundedSize;
}
public
static
int
computeInitialSampleSize(BitmapFactory.Options options,
int
minSideLength,
int
maxNumOfPixels) {
double
w = options.outWidth;
double
h = options.outHeight;
int
lowerBound = (maxNumOfPixels == -
1
) ?
1
:
(
int
) Math.ceil(Math.sqrt(w * h / maxNumOfPixels));
int
upperBound = (minSideLength == -
1
) ?
128
:
(
int
) Math.min(Math.floor(w / minSideLength),
Math.floor(h / minSideLength));
if
(upperBound < lowerBound) {
// return the larger one when there is no overlapping zone.
return
lowerBound;
}
if
((maxNumOfPixels == -
1
) &&
(minSideLength == -
1
)) {
return
1
;
}
else
if
(minSideLength == -
1
) {
return
lowerBound;
}
else
{
return
upperBound;
}
}
}
- computeSampleSize
- NoSQL Data Models
- 递归 / 迭代两种方法实现查找指定目录下所有文件
- 计算机视觉、机器学习相关领域论文和源代码大集合
- 根据条件批量删除sql中的表以及其他内容
- 数据库去重问题
- computeSampleSize
- AIX增加page space操作方法
- C语言中的#ifndef、#def、#endif等宏(转)
- 多个COM端口被占用如何解决
- rollback产生redo及logmnr查看日志内容
- 利用Radiogroup Radiobutton 实现滑动效果菜单
- 解决apt-get无法删除和安装软件的问题的方法
- 利用antixss防备xss[网络技术]
- Linux下的Source Insight+Ubuntu 10.04使用Wine安装Source Insight