web 网页按比例显示图片 js

原文链接:http://blog.csdn.net/liqinghuiyx/article/details/5442349

在动态站点上经常需要上传自己的图片,而这些图片的大小是未知的,在显示成缩略图的时候必须进行按比例的缩放才能美观地显示。以最近做的golf网站(http://www.changligolfsales.com)做例子。

该网站需要上传高尔夫产品图片,并以缩略图显示在列表上,站点服务器支持Asp,但不支持aspjpeg之类的生成缩略图组件,所以将上传的图片直接显示成缩略图,就需要按比例缩放了,前提是要获取图片的长宽,第一个想到的方法是在上传的时候通过ADODB.STREAM对象读取图片的长宽信息保存在数据库并在页面生成的时候读取出来计算比例。这个方法明显的缺点是显示每张图片都要在服务器读取数据并计算,消耗资源多了也加上了页面打开时延。

而第二个方法使用Javascript是将计算量转移到了客户端。

原理是在页面载入完成后(onload触发)在客户端使用Javascript读取每张图片的大小并进行缩放。

[javascript] view plaincopy
  1. //将imageDest图片的大小按比例缩放,适合显示在宽W和高H的区域内  
  2. function ResizeImage(imageDest, W, H)  
  3. {  
  4. //显示框宽度W,高度H   
  5. var image = new Image();  
  6. image.src = imageDest.src;  
  7. if(image.width>0 && image.height>0)  
  8. {  
  9.     //比较纵横比  
  10.     if(image.width/image.height >= W/H)//相对显示框:宽>高  
  11.     {  
  12.      if(image.width > W) //宽度大于显示框宽度W,应压缩高度  
  13.      {  
  14.                imageDest.width = W;   
  15.                imageDest.height = (image.height*W)/image.width;     
  16.               }  
  17.      else //宽度少于或等于显示框宽度W,图片完全显示  
  18.      {  
  19.                imageDest.width = image.width;         
  20.                imageDest.height = image.height;     
  21.               }  
  22.     }  
  23.     else//同理  
  24.     {  
  25.      if(image.height > H)  
  26.      {  
  27.                imageDest.height = H;  
  28.                imageDest.width = (image.width*H)/image.height;  
  29.               }  
  30.      else  
  31.      {  
  32.                imageDest.width = image.width;  
  33.                imageDest.height = image.height;  
  34.               }  
  35.     }  
  36. }  
  37. }  

以上函数对图片进行缩放。

golf网站的每张缩略图的id都设为imgProductItem,如:<img src="<%= imgPath %>"    name="imgProductItem" width="150" height="113" border="0" id="imgProductItem" />,里面的150x113就是显示框的最大尺寸,因为处理函数必须在onload完成时运行,所以这里必须设置一定的大小,要不整个页面在载入图片过程中出现排版错乱,到运行了RsizeAllImageById才恢复正常。

添加一个批量操作的函数:

[javascript] view plaincopy
  1. //将页面内所有指定id的图片按比例缩放  
  2. function RsizeAllImageById(id, W, H)  
  3. {  
  4. var imgs = document.getElementsByTagName("img");  
  5. for(var i=0; i<imgs.length; i++)  
  6. {  
  7.    if(imgs[i].id == id)  
  8.    {  
  9.     ResizeImage(imgs[i], W, H);  
  10.    }  
  11. }  
  12. }  

这样在页面的body添加

[javascript] view plaincopy
  1. <body   οnlοad="javascript:init();">;在head区添加:  
  2.   
  3. <mce:script language="javascript"><!--  
  4. function init()  
  5. {  
  6. RsizeAllImageById("imgProductItem", 150, 113);  
  7. }  
  8. // --></mce:script>  

就可以将所有图片显示成缩略图了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑马C++设计模式1

设计模式的基础是&#xff1a;多态。 设计模式综览表&#xff1a; 单例模式&#xff1a;是保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 简单工厂模式&#xff1a;通过专门顶一个一个类来负责创建其它类的实例&#xff0c;被创建的实例通常都具有共同的父…

对于未来的一点思考

最近在思考一个问题&#xff1a;以后的发展路线。   自己算是走上了IT的道路&#xff0c;但现在也只是在程序员阶段&#xff0c;当然还未毕业&#xff0c;以后的路还很长&#xff0c;但是这个问题确是现在或以后不得不面对的一个问题。  上学期未那两个月&#xff0c;去了N…

深入解析react关于事件绑定this的四种方式

这篇文章主要介绍了详解react关于事件绑定this的四种方式&#xff0c;写的十分的全面细致&#xff0c;具有一定的参考价值&#xff0c;对此有需要的朋友可以参考学习下。如有不足之处&#xff0c;欢迎批评指正。 在react组件中&#xff0c;每个方法的上下文都会指向该组件的实例…

Apache的认证、授权、访问控制

原文链接&#xff1a; http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/howto/auth.html Apache认证、授权、访问控制 认证(Authentication)是指任何识别用户身份的过程。授权(Authorization)是允许特定用户访问特定区域或信息的过程。 相关模块和指令 认证和授权…

黑马C++设计模式2

简单工厂模式 //一般来说&#xff0c;自己创建一个对象的方法是在自己写的业务函数中直接new一个对象出来//但是现实需求&#xff0c;我不想创建对象&#xff0c;我只想拿来用。&#xff08;创建类的步骤比较复杂&#xff09; //好处&#xff0c;1、客户端和具体实现类解耦。2…

[转]Struts 2.1发布

作者 Ian Roughley译者 崔康 发布于 2009年2月4日 上午8时13分 Struts2框架刚刚发布最新2.1版。该版本做了重大升级&#xff0c;包括重构更多代码到插件框架、通过增加convention插件减少XML配置和改进REST支持。 我采访了Musachy Barroso——该版本的一位开发人员&#xff0c…

dim private public static_PHP中const,static,public,private,protected的区别

const: 定义常量&#xff0c;一般定义后不可改变static: 静态&#xff0c;类名可以访问public: 表示全局&#xff0c;类内部外部子类都可以访问&#xff1b;private: 表示私有的&#xff0c;只有本类内部可以使用&#xff1b;protected: 表示受保护的&#xff0c;只有本类或子类…

C#图解教程 第六章 深入理解类

深入理解类 类成员 前两章阐述了9种类成员中的两种&#xff1a;字段和方法。本章将会介绍除事件(第14章)和运算符外的其他类成员&#xff0c;并讨论其特征。 成员修饰符的顺序 字段和方法的声明可以包括许多如public、private这样的修饰符。本章还会讨论许多其他修饰符。多个修…

Apache用户身份验证

原文链接&#xff1a;http://www.yylog.org/?p4830 Apache用户身份验证 在apache应用过程中&#xff0c;管理员经常需要对apache下的目录做一些限制&#xff0c;不希望所有用户都能访问该目录下的文件&#xff0c;只对指定用户访问&#xff0c;此时我们就要用到apache用户身…

携程elong相继牵手支付宝转“危”为“机”

新华网浙江频道1月16日电 自电子机票全面普及以来&#xff0c;航空公司机票直销的力度不断加强正给传统的机票代理甚至在线旅游平台带来了极大的生存压力。 而面对危机&#xff0c;在进一步丰富自身产品服务之外&#xff0c;大的在线旅行平台也终于找到对策。继eLong此前与支付…

c# 获取word表格中的内容_Java 获取、删除Word文本框中的表格

本文介绍如何来获取Word文本框中包含的表格&#xff0c;以及删除表格。程序测试环境包括&#xff1a;IDEAJDK 1.8.0Spire.Doc.jar注&#xff1a;jar导入&#xff0c;可通过创建Maven程序项目&#xff0c;并在pom.xml中配置Maven仓库路径&#xff0c;并指定Free Spire.Doc for J…

Array.prototype.reduce 的理解与实现

Array.prototype.reduce 是 JavaScript 中比较实用的一个函数&#xff0c;但是很多人都没有使用过它&#xff0c;因为 reduce 能做的事情其实 forEach 或者 map 函数也能做&#xff0c;而且比 reduce 好理解。但是 reduce 函数还是值得去了解的。 reduce 函数可以对一个数组进行…

PS抠图方法[photoshop中文教程]

PS抠图方法 一、魔术棒法——最直观的方法   适用范围&#xff1a;图像和背景色色差明显&#xff0c;背景色单一&#xff0c;图像边界清晰。   方法意图&#xff1a;通过删除背景色来获取图像。   方法缺陷&#xff1a;对散乱的毛发没有用。   使用方法&#xff1a…

我的核心技术都是从哪里学到的?如何提高成长的?分享给大家。

1997年&#xff0c;我在读黑龙江大学读大二时&#xff0c;我认识了一个内蒙古大学计算机专业毕业的一个高材生&#xff0c;那时我那朋友引导了我很多&#xff0c;他那时候在我们家那边开一个IT公司&#xff0c;他知道如何靠IT技术赚钱&#xff0c;如何靠程序等赚钱&#xff0c;…

python线性回归算法简介_Python实现的简单线性回归算法实例分析

本文实例讲述了Python实现的简单线性回归算法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; 用python实现R的线性模型(lm)中一元线性回归的简单方法&#xff0c;使用R的women示例数据&#xff0c;R的运行结果&#xff1a; > summary(fit) Call: lm(formula weig…

Object/Relation Mapping 对象关系映射

对象-关系映射&#xff08;Object/Relation Mapping&#xff0c;简称ORM&#xff09;&#xff0c;是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法&#xff0c;关系数据库是企业级应用环境中永久存放数据的主流数据存储…

FastReport使用方法(C/S版)

前言 这两天群里一直有群友问一些关于FastReport的问题&#xff0c;结合他们的问题&#xff0c;在这里做一个整理&#xff0c;有不明白的可以加 FastReport 交流群 群 号&#xff1a;554714044 工具 VS2017 FastReport 开始 1.新建项目&#xff0c;添加三个按钮。预览、设计、…

如何设置Linux时区为东八区

当我们购买美国VPS或服务器的时候&#xff0c;默认情况下是美国时间。对于我们定时执行某些任务会带来麻烦&#xff0c;所以需要设置时区为东八区。登录SSH后&#xff0c;执行tzselect命令。我们这里选择亚洲5.这里选择china 9。一般选东八区&#xff08;北京&#xff0c;广东&…

python删除两个excel表中的相同元素_python筛选出两个文件中重复行的方法

查找A文件中&#xff0c;与B文件中内容不重复的内容#!usr/bin/python import sys import os字符串查找函数&#xff0c;使用二分查找法在列表中进行查询def binarySearch(value, lines): right len(lines) - 1 left 0 a value.strip() while left < right: middle int((…

求解:nhibernate2.0操作oralce提交事务时报错

代码如下: Configuration config new Configuration(); config.AddAssembly("TestCleanSnow"); ISessionFactory factory config.BuildSessionFactory(); ISession session f…