dedecms文章图片按比例缩放的实现方法
dedecms因为图片过大,导致整个网页被挤破或者过大遮住本该显示的内容。如呵解决这一问题?
主要用的是js控制图片按比例缩放原来。
1、打开include\arc.archives.class.php,查找
//设置全局环境变量 $this->Fields['typename'] = $this->TypeLink->TypeInfos['typename']; @SetSysEnv($this->Fields['typeid'],$this->Fields['typename'],$this->Fields['id'],$this->Fields['title'],'archives');
在下面插入
$this->Fields['body'] = str_ireplace(array('onload=""','onload=\'\''),'',$this->Fields['body']); $this->Fields['body'] = preg_replace("@ [\s]{0,}onload[\s]{0,}=[\"'\s]{0,}[\s\S]{0,}[\"'\s] @isU"," ",$this->Fields['body']); $this->Fields['body'] = str_ireplace("<img " ,"<img onload=\";DrawImage(this,600,450);\" ",$this->Fields['body']);
2、在templets/default/article_article.htm模板头部中加入js代码
<script language="JavaScript"> <!-- //图片按比例缩放 var flag=false; function DrawImage(ImgD,iwidth,iheight){ //参数(图片,允许的宽度,允许的高度) var image=new Image(); image.src=ImgD.src; if(image.width>0 && image.height>0){ flag=true; if(image.width/image.height>= iwidth/iheight){ if(image.width>iwidth){ ImgD.width=iwidth; ImgD.height=(image.height*iwidth)/image.width; }else{ ImgD.width=image.width; ImgD.height=image.height; } ImgD.alt=image.width+"×"+image.height; } else{ if(image.height>iheight){ ImgD.height=iheight; ImgD.width=(image.width*iheight)/image.height; }else{ ImgD.width=image.width; ImgD.height=image.height; } ImgD.alt=image.width+"×"+image.height; } } } //--> </script>
到此代码修改完成。
3、特别注意的是,在发布图片的时候一定不要加图片的宽度和高度。不然会没有效果。