废话不说,直接到正题。
将用户选择的图片,直接加载到一个固定大小的容器内。如果被加载的图片大小和容器的大小及宽高一致,那么图片比例失调的概率极大。如何让图片加载到容器内有保持比例不失调呢?想一个算法吧!
设容器宽为W,高为H,则宽高比例为W/H=A;
设被加载图片宽为W',高为H',则被加载图片宽高为W'/H'=A';
设修正后的被加载图片宽为W'',高为H''。
下面分情况讨论:
A>1的情况
1. 若A'>A,这时被加载图片相对容器更宽,更矮。
因此,被加载图片宽度 = 容器宽度, 被加载图片高度 = 原有宽高比率下的现有宽度对应的高度;
则,W'' = W, H'' = W'' / A' = W / ( W' / H' ) = W * H' / W' = H' * ( W / W' );
2. 若A'<A且A'>1,这时被加载图片相对容器更高,更窄。
因此,被加载图片高度 = 容器高度, 被加载图片宽度 = 原有宽高比率下的现有宽度对应的宽度;
则,H'' = H, W'' = H'' * A' = H * ( W' / H' ) = H * W' / H' = W'
* ( H / H' );
3. 若A'<A且A'<1,这时被加载图片相对容器更高,更窄。
因此,被加载图片高度 = 容器高度, 被加载图片宽度 = 原有宽高比率下的现有宽度对应的宽度;
则,H'' = H, W'' = H'' * A' = H * ( W' / H' ) = H * W' / H' = W' * ( H / H' );
4. 若A'<A且A'=1,这时被加载图片为正方形。
因此,应该取容器最小变作为被加载图片的边长;由于目前容器更宽,因此取容器高为被加载图片的边长;
则算法同2,3.
5. 若A' = A,这时被加载图片和容器的宽高比率相同。
因此,W'' = W, H'' = H。
A<1的情况
1. 若A'>A且A'>1,这时被加载图片相对容器更宽,更矮。
因此,算法同(A>1的情况中的算法1)
2. 若A'>A且A'=1,这时被加载图片为正方形,相对容器较宽,较矮。
因此,算法同(A>1的情况中的算法1)
3. 若A'>A且A'<1,这时被加载图片相对容器更宽,更矮。
因此,算法同(A>1的情况中的算法1)
4. 若A'<A,这时被加载图片相对容器更高,更窄。
因此,算法同(A>1的情况中的算法2,3)
5. 若A' = A,这时被加载图片和容器宽高比率相同。
因此,W'' = W, H'' = H;
在A=1的情况下
1. 若A'>A,这时被加载图片相对容器更宽,更矮。
因此,算法同(A>1的情况中的算法1)
2. 若A'<A,这时被加载图片相对容器更高,更窄。
因此,算法同(A>1的情况中的算法2,3)
3. 若A' = A,W'' = W, H'' = H.
综合上述三种情况,可以得出以下结论:
若被加载图片相对容器更宽,更矮:
即当A' > A时,W'' = W, H'' = W / A';
若被加载图片相对容器更高,更窄:
即当A' < A时,H'' = H, W'' = H * A';
若被加载图片宽高比与容器相当:
即当A' = A时,W'' = W, H'' = H。
测试文件已经上传,欢迎大家评点
分享到:
相关推荐
综上所述,要在Android的ImageView上指定位置添加图片,并实现等比例缩放和自适应,我们需要对Android的视图布局、ImageView的ScaleType、Bitmap的缩放以及适应不同屏幕尺寸有深入理解。通过以上代码示例,我们可以...
总结来说,"jQuery图片尺寸调整插件图片垂直居中自适应容器"是一个强大且实用的工具,它结合了jQuery的便利性和CSS布局的灵活性,为开发者提供了方便快捷地处理网页中图片展示问题的解决方案。通过深入理解这个插件...
在前端开发中,经常遇到的一个问题是当页面中的图片尺寸不统一,特别是当图片的比例与显示区域的比例不匹配时,如何使得图片能够自适应显示区域,并且保持原有比例不变形。本文将通过一个具体的示例,详细介绍如何...
3. 动态高度计算:当图片加载完成或者屏幕尺寸改变时,需要动态调整每个单元格的高度,确保图片保持原始比例。可以使用SDWebImage库来异步加载图片,并在图片加载完成后更新布局。 4. 布局更新:当新的数据加入或...
在网页设计中,图片自适应是一项重要的技术,它允许图片根据浏览器窗口的大小或设备的屏幕尺寸自动调整显示比例,确保用户体验的优化。对于IE8这样的老版本浏览器,由于其对现代CSS3属性的支持有限,实现图片自适应...
总结来说,“Android图片自适应adapter demo”展示了如何在ListView中实现图片的高度自适应,关键在于适配器的正确使用以及图片加载和尺寸计算的技巧。通过学习这个示例,开发者可以更好地优化ListView的显示效果,...
在网页设计中,"js+css图片列表自适应"是一个重要的技术点,它涉及到JavaScript和CSS两种核心技术,用于实现图片列表在不同设备和屏幕尺寸下的良好显示效果。这个主题主要包含以下几个方面: 1. **响应式设计**:...
3. 使用jQuery监听图片加载事件,获取图片尺寸。 4. 根据图片尺寸调整容器大小。 5. 监听窗口大小变化,动态更新容器大小。 6. 可选:添加预加载机制,提升用户体验。 通过以上步骤,我们可以创建一个适应各种屏幕...
img.load(function() { // 确保图片加载完成后再计算尺寸 var imgWidth = this.width; var imgHeight = this.height; if (container.width() ) { var ratio = container.width() / imgWidth; img.height(Math...
我们可以设置列数,然后在适配器的onBindViewHolder方法中处理图片的加载和尺寸计算。 1. **自定义ImageView** 在瀑布流布局中,图片的高度需要自适应。可以创建一个自定义的ImageView子类,重写onMeasure方法,...
在上述代码中,`originalWidth`和`originalHeight`用于保存图片原始尺寸,首次旋转时它们为undefined,所以使用图片自身的width和height。之后的旋转则使用之前保存的尺寸,因为每次旋转后宽高会互换。 最后,为了...
### kindEditor4.1 版本中实现图片自适应的方法 #### 一、问题背景与需求分析 在使用kindEditor4.1版本时,我们可能会遇到一个常见的问题:上传的图片无法很好地适配不同大小的屏幕,导致在某些设备上出现拉伸或...
它的工作原理是通过计算容器的宽度,然后根据图片的数量和原始尺寸动态调整每个图片的宽度,使得所有的图片能够在一行内无缝显示。如果屏幕尺寸变化,插件会自动重新计算布局,确保图片始终适应屏幕。 具体实现过程...
- 使用`window.innerWidth`和`window.innerHeight`可以获取浏览器窗口的尺寸,从而计算出适应的背景图片尺寸。对于响应式设计,还可以设置断点,根据不同的设备尺寸应用不同的背景图片或设置。 3. **响应式设计与...
2. **JavaScript解决方案**:我们还可以使用JavaScript动态计算图片的大小。当图片加载完成后,通过JavaScript获取图片的实际宽度和高度,然后根据屏幕宽度进行适配。以下是一个简单的示例: ```javascript ...
1. 动态计算大小:JavaScript可以实时获取浏览器窗口的大小,并据此计算图片的合适尺寸。例如,使用`window.innerWidth`和`window.innerHeight`可以获取窗口宽度和高度,然后调整图片的`width`和`height`属性。 2. ...
使用JavaScript实现往往复杂且可能会影响页面性能,因为需要在页面加载或窗口调整大小时动态计算图片尺寸并更新。而使用overflow:hidden虽然简单,但是它仅仅是裁剪超出容器部分,而不是使图片缩放以适应容器,这样...
在全屏自适应图片瀑布流布局中,网页会根据设备屏幕尺寸调整图片的大小和排列,以保持整体布局的平衡和美感。 瀑布流布局的核心算法通常包括以下步骤: 1. 获取容器宽度:首先,我们需要获取包含图片的容器的宽度,...
- **响应式网页设计**:当页面需要在不同设备上展示时,自动调整图片尺寸以适应屏幕。 - **动态加载图片**:当图片的尺寸未知时,可以在图片加载完成后调用此函数,确保图片正确显示。 - **图片库展示**:在图片库或...