正在做一个类似于拍拍的项目,遇到这样一个问题:
用户上传 商品图片的时候 图片的高宽比例不确定,显示到网页上的图片宽*高 是固定的比如:150*120,这样 有的图片就会变形本来是个“高图”,显示出来就成了矮图。
我看了一下拍拍的,它的那个图片好像是有一个固定寛高的白色背景,然后把上传的图片放到背景上,然后生成一个图片,这样上传的图片就不会被拉扯,只是生成的图片可能会有个白边。
那位大侠做过类似的东西,能否给些提示 ,最好能有代码。本人新手中的新手,不慎感激。
就像这两个图片
<script>
function zoom(it,hlen,wlen,divheight){
setTimeout(function(){
myw = 1;
if(it.height>=hlen && it.width>=wlen){
if((hlen/it.height)<(wlen/it.width)){
myw = hlen/it.height;
it.style.height =it.height*hlen/it.height+"px";
it.style.width = it.width*hlen/it.height+"px";
}
else{
myw=wlen/it.width;
it.style.height =it.height*wlen/it.width+"px";
it.style.width = it.width*wlen/it.width+"px";
}
}
if(it.height>=hlen && it.width<wlen){
myw=hlen/it.height;
it.style.height =it.height*hlen/it.height+"px";
it.style.width = it.width*hlen/it.height+"px";
}
if(it.height<hlen && it.width>=wlen){
myw=wlen/it.width;
it.style.height =it.height*wlen/it.width+"px";
it.style.width = it.width*wlen/it.width+"px";
}
if(it.height<hlen && it.width<wlen){
myw=1;
it.style.height =it.height+"px";
it.style.width = it.width+"px";
}
it.style.marginTop=parseInt((divheight-it.height)/2,10)+"px";
},100);
}
</script>
调用
<img src="..." onload="zoom(this,高,宽,外围边框高度)"/>
先计算长宽比,然后锁定长宽比进行缩放,将长或宽相对较大的那一个缩放到你需要的程度,然后将画布设置为你需要的宽度,背景填充白色即可
或者把缩放过的图片写到另一张白色的图片上面去,都可以
表格中嵌入图片时,就有边框,笔者在做cnblogs首页时就碰到了这个问题,最后的语句是:
<table rules= all border="1" bordercolor="#D6D6D6"><tr><td>
<img src="http://images.cnblogs.com/cnblogs_com/hulihui/MyPhoto2.gif">
</td></tr></table>
注意,rules=all。如果省略,则有黑色左边和上边框,不美观。上图中看不出是否是用表格做的边框,可以具体测试比较。另,笔者首页上也没有用到背景图片,也没有设定图片具体的尺寸大小。
刚好做过类似的问题?我用js控制图片的大小,先判断图片的大小,然后把容器的宽度付给图片,这样就不会变形了