图片显示尺寸计算方法

背景:拿到一张原始图片的尺寸,在一个最大最小范围内,综合原始图片比例,计算需要显示的大小。直接贴代码

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
65
66
67
68
69
70
imageResize(double width, double height) {
// 最大/最小范围
double maxW = 140;
double maxH = 140;
double minW = 79;
double minH = 79;

double resizeW = 0;
double resizeH = 0;

double minScale = minW/maxW;
double maxScale = maxW/minW;
double scale = width/height;

if (scale < minScale) {
// 实际比例小于最小比例
// 按最小比例设置宽高
resizeW = minW;
resizeH = maxH;
} else if(scale <= 1) {
// 实际比例小于1,分三种情况
// 宽 < 高
// 用短边比较最大最小值。短了补短边,长边按比例;长了削长边,短边按比例
if (width < minW) {
// 宽度小于最小宽,补齐宽度
// 高度按比例
resizeW = minW;
resizeH = resizeW/scale;
} else if (width <= maxW && height <= maxH) {
// 宽度小于等于最大宽,取原值
resizeW = width;
resizeH = height;
} else {
// 宽度大于最大宽,高度必然大于最大高,高度取最大高
// 宽度按比例计算
resizeH = maxH;
resizeW = resizeH*scale;

}
} else if(scale > 1 && scale < maxScale) {
// 比例介于 1 与 最大比例之间
// 宽 > 高
// 用短边比较最大最小值。短了补短边,长边按比例;长了削长边,短边按比例

if (height < minH) {
// 高度小于最小高度,补齐到最小高度
// 宽度按比例
resizeH = minH;
resizeW = resizeH*scale;

} else if (height <= maxH && width <= maxW) {
// 高度小于最小高度,取原值
// 两个值都介于最大最小之间,取原值
resizeW = width;
resizeH = height;

} else {
// 高度大于最大高,宽度也大于最大宽,宽度设为最大宽
// 高度按比例
resizeW = maxW;
resizeH = resizeW/scale;

}
} else {
// 均大于最大值,取最大值
resizeH = minH;
resizeW = maxW;
}
return [resizeW,resizeH];
}