客户端和服务器图片的缩放和居中显示

缩放图片的原理就是通过展示 区域和原图比较,得到缩放率


1. 服务器端的图片显示非常简单,直接给img的src赋值即可然后控制img控件的style

var ctrlMaxWidth = 350,ctrlMaxHeight = 300;//展示区域大小
function DrawServerImageSize(DrawImage){
   var imgCtrl = new Image();
   imgCtrl.src = DrawImage.src;//借imgCtrl得到原图的长和宽
   //获取图片缩放的比例,取最小值
   var ratio = Math.min( 1, Math.max( 0, ctrlMaxWidth ) / imgCtrl.width  || 1, Math.max( 0, ctrlMaxHeight ) / imgCtrl.height || 1);
   DrawImage.style.width = Math.round( imgCtrl.width * ratio ) + "px";
   DrawImage.style.height = Math.round( imgCtrl.height * ratio ) + "px";
}

2. 客户端的图片显示IE中通过滤镜显示,给img设置filter属性

使用滤镜显示浏览客户端图片:

var url = 'file:///' + Ext.get('imageUpload').dom.value;//获取客户端图片的位置
if (img_reg.test(url)) {
    var image = Ext.get('imageBrowse').dom;
    if (Ext.isIE) {
       image.src = Ext.BLANK_IMAGE_URL;// 覆盖原来的图片
        image.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='image',src=\"" + url + "\")";
    } else {
       image.src = getFullPath(Ext.get('imageUpload').dom);
    }
    try{
       DrawClientImageSize(image);
       DrawImagePosition(image);
    }
    catch(err){
    };
}
function DrawClientImageSize(DrawImage){
   var picWidth = DrawImage.offsetWidth;
   var picHeight = DrawImage.offsetHeight;
   //获取图片缩放的比例,取最小值
   var ratio = Math.min( 1, Math.max( 0, ctrlMaxWidth ) / picWidth || 1, Math.max( 0, ctrlMaxHeight ) / picHeight || 1);
   if(Ext.isIE){
      DrawImage.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = 'scale';
   }
   DrawImage.style.width = Math.round( picWidth * ratio ) + "px";
   DrawImage.style.height = Math.round( picHeight * ratio ) + "px";
 }

3.使图片居中显示

function DrawImagePosition(DrawImage){
    DrawImage.style.position = "relative";
    DrawImage.style.top =  (ctrlMaxHeight - DrawImage.offsetHeight)/2 + "px";
    DrawImage.style.left =  (ctrlMaxWidth - DrawImage.offsetWidth)/2 + "px";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值