图片显示尺寸计算方法
背景:拿到一张原始图片的尺寸,在一个最大最小范围内,综合原始图片比例,计算需要显示的大小。直接贴代码
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]; }
|