仰天一笑
昨日不悔,今日勿失,明日莫忧! —徐羽
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
::
230 随笔 :: 27 文章 :: 806 评论 :: 40 Trackbacks
按比例缩放图片
看到海东兄的
按比例缩放图片
,我就把我写的js版本的也拿出来show一下,哈哈!
js版本:
function resizeImage(obj, MaxW, MaxH)
{
var imageObject = obj;
var state = imageObject.readyState;
if(state!='complete')
{
setTimeout("resizeImage("+imageObject+","+MaxW+","+MaxH+")",50);
return;
}
var oldImage = new Image();
oldImage.src = imageObject.src;
var dW = oldImage.width;
var dH = oldImage.height;
if(dW>MaxW || dH>MaxH)
{
a = dW/MaxW; b = dH/MaxH;
if( b>a ) a = b;
dW = dW/a; dH = dH/a;
}
if(dW > 0 && dH > 0)
{
imageObject.width = dW;
imageObject.height = dH;
}
}
使用很简单:<img src="../pic.jpg" onload='resizeImage(this,60,90)> 就OK了;
注:等比例放缩的时候会出现抖动的情况,处理方法很简单,你在img的属性先设置它的widht和height,这样的话加载的时候绝对不会超过这个尺寸,等你js运行好之后就会调到你所规定的比例,绝对不会以下撑到很大。
同时也附上C#版本的
C#版本---海东兄
http://www.cnblogs.com/ghd258/archive/2005/11/07/270447.html
1
/**/
///
<summary>
2
///
按比例缩放图片
3
///
</summary>
4
///
<param name="imgUrl">
图片的路径
</param>
5
///
<param name="imgHeight">
图片的高度
</param>
6
///
<param name="imgWidth">
图片的宽度
</param>
7
///
<returns></returns>
8
public
static
string
GetImageSize(
string
imgUrl,
int
imgHeight,
int
imgWidth)
9
{
10
string
fileName
=
System.Web.HttpContext.Current.Server.MapPath(imgUrl);
11
string
strResult
=
string
.Empty;
12
if
(System.IO.File.Exists(fileName)
&&
imgHeight
!=
0
&&
imgWidth
!=
0
)
13
{
14
decimal
desWidth;
decimal
desHeight;
//
目标宽高
15
System.Drawing.Image objImage
=
System.Drawing.Image.FromFile(fileName);
16
decimal
radioAct
=
(
decimal
)objImage.Width
/
(
decimal
)objImage.Height;
//
原始图片的宽高比
17
decimal
radioLoc
=
(
decimal
)imgWidth
/
(
decimal
)imgHeight;
//
图片位的宽高比
18
if
(radioAct
>
radioLoc)
//
原始图片比图片位宽
19
{
20
decimal
dcmZoom
=
(
decimal
)imgWidth
/
(
decimal
)objImage.Width;
21
desHeight
=
objImage.Height
*
dcmZoom;
22
desWidth
=
imgWidth;
23
}
24
else
25
{
26
decimal
dcmZoom
=
(
decimal
)imgHeight
/
(
decimal
)objImage.Height;
27
desWidth
=
objImage.Width
*
dcmZoom;
28
desHeight
=
imgHeight;
29
}
30
objImage.Dispose();
//
释放资源
31
strResult
=
"
width=\
""
+ Convert.ToString((int)desWidth) +
"
\
"
height=\
""
32
+
Convert.ToString((
int
)desHeight)
+
"
\
"
"
;
33
}
34
return
strResult;
35
}
posted on 2006-12-18 19:24
仰天一笑
阅读(3289)
评论(11)
编辑
收藏
所属分类:
原创天地
、
ASP.Net-C#
、
Javascript/Ajax/XML
评论
#1楼
2006-12-19 01:03
航天奇侠
像当年我就为了这个烦了很久。
回复
引用
查看
#2楼
2006-12-19 09:10
车载影音 [未注册用户]
收藏.
^_^
回复
引用
#3楼
2006-12-19 09:12
星期零[匿名]
按比例缩放的,分享一个我写的
<script language="javascript">
function changeImg(mypic){
var xw=160;
var xl=180;
var width = mypic.width;
var height = mypic.height;
var bili = width/height;
var A=xw/width;
var B=xl/height;
if(!(A>1&&B>1))
{
if(A<B)
{
mypic.width=xw;
mypic.height=xw/bili;
}
if(A>B)
{
mypic.width=xl*bili;
mypic.height=xl;
}
}
}
</script>
<img src="sh180.jpg" onload="changeImg(this)">
不过后来发现,只要在img中只指定一个width或者一个height属性,可以自动实现按比例缩放,如:<img src="sh180.jpg" width="100" />,这样的话就可以固定宽为100,然后高按比例自动缩放了。
回复
引用
查看
#4楼
2006-12-19 09:36
有容乃大
方法是不错,只可惜不支持Firefox。语句“imageObject.readyState”执行时,Firefox始终返回undefined。以前也曾这样写过,但firefox过不了,只好在注册脚本调用了。
回复
引用
查看
#5楼
2006-12-19 09:59
Go_Rush
指出一个 bug
如果 img 的 src 为一个 gif动画,那么你的 changeImg 函数会永远重复执行
详见:
http://www.cnblogs.com/ashun/archive/2006/12/19/ie-gif-image-onload-bug.html
回复
引用
查看
#6楼
2006-12-19 23:24
skyover [未注册用户]
<img src="" onload="if(width>100)width-100" />
:)
回复
引用
#7楼
[
楼主
]
2006-12-20 09:45
仰天一笑
@星期零[匿名]
1、感谢你的分享
2、<img src="sh180.jpg" width="100" />,这样的话就可以固定宽为100,但是他会把图片样式改变的很难看,所以才出现按比例缩放图片的
@有容乃大
浏览器兼容是个头疼的问题,研究...
@Go_Rush
感谢,学习,已拜读
@skyover
简洁处理方式,实现图片大小控制的,但是通用性不是很强 :)
回复
引用
查看
#8楼
2007-01-07 12:56
在北京的湖南人
值得研究。。。
回复
引用
查看
#9楼
2007-01-22 13:27
蛐蛐[匿名] [未注册用户]
分享一下我的:
function SetSize(obj, width, height)
{
myImage = new Image();
myImage.src = obj.src;
if (myImage.width>0 && myImage.height>0)
{
var rate = 1;
if (myImage.width>width || myImage.height>height)
{
if (width/myImage.width<height/myImage.height)
{
rate = width/myImage.width;
}
else
{
rate = height/myImage.height;
}
}
if (window.navigator.appName == "Microsoft Internet Explorer")
{
obj.style.zoom = rate;
}
else
{
obj.width = myImage.width*rate;
obj.height = myImage.height*rate;
}
}
}
用法:
<img src="img/offer/41936519.jpg" border="0" style="zoom: 0.1" onload="SetSize(this, 80, 60)"/>
这种方法在IE、FIREFOX、OPERA、NETSCAPE测试都适用。
回复
引用
#10楼
[
楼主
]
2007-01-22 14:46
仰天一笑
@蛐蛐[匿名]
感谢您的分享
回复
引用
查看
#11楼
2007-11-23 08:37
zsg [未注册用户]
非常感谢!我找了好长时间才找到一个完美的。再次感谢
回复
引用
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
博客园首页
新闻频道
社区
小组
博问
网摘
闪存
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2007-10-25 16:36 编辑过
成果网帮您增加网站收入
相关文章:
“图片变幻显示控件”发布
图片按比例缩放
图片转换,把bmp图片转换为jpg图片
等比例缩放图片问题解决
JavaScript 图片切割效果(带拖放、缩放效果)
按比例缩放图片
相关链接:
所属分类的其他文章:
23条心灵寄语献给在创业一线的兄弟姐妹
流媒体数字版权控制系统DRM
电子商城
企业及时通讯软件源代码销售,功能类似QQ/UC/贸易通
DataGrid实现动态数字图形效果
location用法简单介绍
javascript实现datagrid客户端checkbox列的全选,反选
按比例缩放图片
个人网站成功12要诀
创建不了XMLHTTP控件
最新IT新闻:
淘宝与微软总部达成首次合作 Silverlight加入店铺
苹果9日发布iTunes 8、iPhone 2.1和第四代iPod Nano
微软出品8GB蓝色和120GB Zune播放器
千亿美元市值榜:微软居首移动第二 诺基亚退榜
Google申请“海上数据中心”专利 可能付诸行动
公告
一、版权归原创作者所有。
二、坚持挖掘互联网宝藏。
三、重在技术交流,共享知识。
四、技术文章包括asp.net、seo、ajax、css、javascript等。
Email:ansonxy@gmail.com
MSN:dingxi819@yahoo.com.cn
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(17)
给我留言
查看留言
我参与的团队
上海.NET俱乐部(0/2237)
Ajax&Atlas技术团队(0/1149)
.net企业应用开发(1/121)
我的标签
火车站售票点
(1)
上海火车站售票点
(1)
上海火车票预定送票公司
(1)
一票难求
(1)
海量查询
(1)
无限分级
(1)
树形结构数据查询
(1)
datatable
(1)
dataview
(1)
datatable和dataview
(1)
更多
随笔分类
(258)
ASP.Net-C#(75)
(rss)
DataBase(27)
(rss)
Javascript/Ajax/XML(48)
(rss)
产品专卖(4)
(rss)
古风古韵(10)
(rss)
谈天论地(30)
(rss)
网站建设(27)
(rss)
原创天地(37)
(rss)
文章分类
(27)
DotNet(12)
(rss)
DRM(5)
(rss)
Electronic Commerce(2)
(rss)
JavaScript(3)
(rss)
software engineering (5)
(rss)
相册
汇亚创意设计
上海汇亚科技公司
收藏夹
(200)
.Text(11)
(rss)
ADO.Net(4)
(rss)
Ajax/XML(10)
(rss)
ASP.Net(53)
(rss)
C#(6)
(rss)
DataBase(5)
(rss)
DataGrid(12)
(rss)
Html/Css(6)
(rss)
IIS(1)
(rss)
Script(24)
(rss)
搜索引擎(11)
(rss)
谈天论地(8)
(rss)
网站优化/推广(9)
(rss)
网址收集(22)
(rss)
项目管理(9)
(rss)
源代码(9)
(rss)
My Links
dudu
(rss)
jackei
(rss)
net366_汇亚科技
seo探索
公司BLOG
(rss)
海东
(rss)
黑梦SEO
汇亚创意设计
李天平
(rss)
兄弟blog
最新随笔
1. [转]科学思维-智慧国王故事
2. 23条心灵寄语献给在创业一线的兄弟姐妹
3. 余士维讲座中的十八个故事[转载]
4. DataTable 和 DataView 的理解
5. [推荐]无限分级数量查询优化
6. 一票难求-摘二片小诗已解胸口之闷
7. 上海火车站售票点
8. ERP项目管理12要点
9. ASP.NET常用代码
10. asp.net c#中对cookie的操作
11. 如何搭建企业局域网共享
12. SQL Sever安装问题
13. Asp.Net Web项目打包
14. 韩文数据库存取乱码解决方案
15. Seomoz年度Web2.0排名 中国网站无一入围
16. 数据库存取非简体中文出现乱码的解决
17. 商业网站设计主要原则
18. 网站策划,网站建设的重中之重
19. 软件项目实施规范小结
20. iis权限设置
21. 如何设置SQL Server 全文搜索
22. 批处理命令小集
23. 批量生成虚拟目录
24. 上海公交路线一览表
25. 抽闲破个案,放松一下(1)
26. IIS健全应用程序池设置
27. 《亮剑》李云龙原型之一:王近山中将
28. 如何清除木马--104种木马手工清除方法
29. 流媒体数字版权控制系统DRM
30. 电信增值业务寻找合作伙伴
31. 电子商城
32. 企业及时通讯软件源代码销售,功能类似QQ/UC/贸易通
33. 50个不上你网站的理由
34. 价值50个亿的10句话
35. asp.net项目 automation服务器不能创建对象
36. 如何杀除恶意网站的网页病毒
37. 电脑推荐命令全集-值得收藏
38. 取得当前鼠标的X,Y坐标
39. IIS启动不了(意外错误0x8ffe2740)
40. window2003 安全配置
积分与排名
积分 - 434182
排名 - 46
最新评论
1. re: IIS启动不了(意外错误0x8ffe2740)
你真TMD是我的再生父母
--的
2. re: 错误中积累经验,BUG中寻发展,总结中提升
项目整合的时候一定要注意是否将web.config放置了多份,这样会引起配置型出错,但是在你本机调试的时候可能不会出错,切忌!
--仰天一笑
3. re: 23条心灵寄语献给在创业一线的兄弟姐妹
//我们最值得自豪的不在于从不跌倒,而在于每次跌倒之后都爬起来
最后一句太深刻了~
--kkun
4. re: 余士维讲座中的十八个故事[转载]
看了让人成长很多.
--小丫头
5. re: 推荐--jQuery使用手册
哦,多谢了!但我还是不知道jquery-1.2.6.min.js这个文件有什么作用啊
--一壶水酒
阅读排行榜
1. 上海长途汽车站客运站点及时刻表(32307)
2. ArrayList用法(22299)
3. 李白诗集(18465)
4. 推荐--jQuery使用手册(15875)
5. 推荐-高质量C++/C编程指南(林锐)(14779)
6. 经典推荐--.Net面试法宝(面试题收集)(13650)
7. 上海公交路线一览表(8582)
8. “SQL Server不存在或访问被拒绝”问题的解决(7839)
9. DataGrid中DropDownList的动态绑定和触发DropDownList事件(7273)
10. 远程连接SQL Server(7184)
11. [原]用window.location.href实现刷新另个框架页面(5183)
12. javascript实现datagrid客户端checkbox列的全选,反选 (4785)
13. 征集佳句-精妙SQL语句收集(4693)
14. window.close关闭窗口,不弹出系统提示,直接关闭(4687)
15. IIS启动不了(意外错误0x8ffe2740)(4437)
16. 关键字加亮--JS方法(4404)
17. location用法简单介绍(4350)
18. [整理]asp.net 上传大文件解决方案(4283)
19. [强烈推荐]新手入门提速器,有了他,ASP.NET问题将迎刃而解(4105)
20. Js+XML 操作(4074)
21. Sql Server数据库的备份和恢复措施(3826)
22. [转贴]Hello NHibernate(3715)
23. C# 中的类型转换(3481)
24. js事件列表(3365)
25. 按比例缩放图片(3289)
26. ASP.Net防止刷新自动触发事件的解决方案(3272)
27. ASP.NET 网站路径(3152)
28. 不要让SQLServer自动转换害了你!(3031)
29. 经典推荐—.NET相关最好东东(全球最新评价)(3011)
30. 界面设计测试规范(2990)
31. 在C#中应用哈希表(Hashtable)(2988)
32. [原]Ajax简单客户登陆验证(2911)
33. DataGrid自动编号之黄金版(2885)
34. [原]简易文本编辑器源码(2778)
35. [原]提交页面的定位--scrollIntoView的用法(2756)
36. 抓取Web网页数据分析(2737)
37. 网站开发简单规范(2536)
38. DIV+CSS三行两列经典布局(2438)
39. [经典推荐]事半功倍系列之javascript(二)(2261)
40. 正则表达式过滤HTML危险脚本(2242)
评论排行榜
1. [整理]asp.net 上传大文件解决方案(81)
2. 上海长途汽车站客运站点及时刻表(36)
3. ArrayList用法(34)
4. 推荐--jQuery使用手册(25)
5. 关键字加亮--JS方法(23)
6. 李白诗集(21)
7. “SQL Server不存在或访问被拒绝”问题的解决(21)
8. 经典推荐--.Net面试法宝(面试题收集)(21)
9. javascript实现datagrid客户端checkbox列的全选,反选 (18)
10. [推荐]测试你有没有经理头脑(17)
Powered by:
博客园
Copyright © 仰天一笑