Asp.net 让图片按比例进行缩放显示
2007-10-11 13:19
513 查看
/*****
作者: william Lin
功能: 让图片按比例进行缩放显示
技术: Asp.net
*******/
算法分析:
设加载的图片为:宽=Weight 高= height
那么比例就为 K = Weight/height
=================== 为达到最大高宽为 90
所以算法如下所示
核心只要按照比例K,计算出最终的宽和高就可以了
--------前台 showPicture.aspx
<img class="picline"
height='<%# GetHeight(DataBinder.Eval(Container.DataItem, "pic1").ToString())%>'
width='<%# GetWidth(DataBinder.Eval(Container.DataItem, "pic1").ToString())%>'
src="<%# Deal_Pic(DataBinder.Eval(Container.DataItem,"pic1").ToString()) %>" border="0">
--------后台 showPicture.cs
using System.Drawing;
#region 将图片按大小比例显示,处理 //william add function 2007-10-09
/// <summary>
/// 宽度
/// </summary>
public int GetWidth(string url)
{
try
{
if(url == "*****" || url.Length < 10)
{
url = "/images/nopic.gif";
}
url = url.Substring(1,url.Length-1);
string urrl = Server.MapPath(url);
double k;
double width=0;
double height=0;
// 注意这里的 urrl 一定要物理路径,不然会抱错。
System.Drawing.Bitmap imgObj = new Bitmap(urrl);
if ((imgObj.Width != 0) && (imgObj.Height != 0))
{
width=imgObj.Width;
height=imgObj.Height;
k=Convert.ToDouble( width/height);
if(k>=1)
{
if (width>=height)
{
width=90;
height=width/k;
}
}
else
{
if (height>=width)
{
height=90;
width=k*height;
}
}
}
int wid = Convert.ToInt32(width);
return wid;
}
catch
{
return 90;
}
}
/// <summary>
/// 高度
/// </summary>
public int GetHeight(string url)
{
try
{
if(url == "*****" || url.Length < 10)
{
url = "/images/nopic.gif";
}
url = url.Substring(1,url.Length-1);
string urrl = Server.MapPath(url);
double k;
double width=0;
double height=0;
System.Drawing.Bitmap imgObj = new Bitmap(urrl);
if ((imgObj.Width != 0) && (imgObj.Height != 0))
{
width=imgObj.Width;
height=imgObj.Height;
k=Convert.ToDouble( width/height);
if(k>=1)
{
if (width>=height)
{
width=90;
height=width/k;
}
}
else
{
if (height>=width)
{
height=90;
width=k*height;
}
}
}
int hid = Convert.ToInt32(height);
return hid;
}
catch
{
return 90;
}
}
#endregion ======================end
/***************************/
前台代码可以加入一个表格的细边框,做到像阿里巴巴显示产品的那种效果.
<table width="100" height="100" border="1" cellspacing="0" cellpadding="0" bordercolordark="#ffffff" bordercolorlight="#000000">
<tr>
<th>
<A href="minishop/shop.aspx?id=<%# DataBinder.Eval(Container.DataItem,"supplier_id") %>&pid=<%# DataBinder.Eval(Container.DataItem,"post_id") %>">
<img class="picline"
height='<%# GetHeight(DataBinder.Eval(Container.DataItem, "pic1").ToString())%>'
width='<%# GetWidth(DataBinder.Eval(Container.DataItem, "pic1").ToString())%>'
src="<%# Deal_Pic(DataBinder.Eval(Container.DataItem,"pic1").ToString()) %>" border="0"></a></th>
</tr>
</table>
============================ 补充
让图片自适应大小的方法
昨天在和动漫网站开发人员的交流中发现一个问题,就是新闻详细页面中的图片不会自适应大小,这其实是一个非常常见的问题,目前我所知的解决办法有以下几种:
1. 用后台程序自动生成缩略图
2. 用css调用expression控制图片溢出后的大小;
(http://www.blog.edu.cn/user1/7987/archives/2006/1440861.shtml )
3. 用js写函数控制图片溢出后的大小;
其中后两种都是javascript在起作用,但是工作原理不同,css中调用expression可以解决这个问题,但是解决得不好,因为如果页面中图片一多,expression中的语句会不断被调用,非常耗费客户端内存,容易导致浏览器假死;而直接用javascript,在页面onload的时候就可以轻松解决这个问题,而且只调用一次,比起expression真是好得太多,程序很简单,下面是个简单的例子,我假设这个页面图片宽度不能超过200px,而实际图片宽度是550px:
<body>
<img id="achome" src="http://image2.sina.com.cn/ent/y/2006-10-09/U1819P28T3D1276435F326DT20061009152013.jpg" />
</body>
<script>
var imageArr=document.getElementById(controlID);
var imageRate = imageArr.offsetWidth / imageArr.offsetHeight;
if(imageArr.offsetWidth > maxWidth)
{
imageArr.style.width=maxWidth + "px";
imageArr.style.Height=maxWidth / imageRate + "px";
}
if(imageArr.offsetHeight > maxHeight)
{
imageArr.style.width = maxHeight * imageRate + "px";
imageArr.style.Height = maxHeight + "px";
}
</script>
作者: william Lin
功能: 让图片按比例进行缩放显示
技术: Asp.net
*******/
算法分析:
设加载的图片为:宽=Weight 高= height
那么比例就为 K = Weight/height
=================== 为达到最大高宽为 90
所以算法如下所示
核心只要按照比例K,计算出最终的宽和高就可以了
--------前台 showPicture.aspx
<img class="picline"
height='<%# GetHeight(DataBinder.Eval(Container.DataItem, "pic1").ToString())%>'
width='<%# GetWidth(DataBinder.Eval(Container.DataItem, "pic1").ToString())%>'
src="<%# Deal_Pic(DataBinder.Eval(Container.DataItem,"pic1").ToString()) %>" border="0">
--------后台 showPicture.cs
using System.Drawing;
#region 将图片按大小比例显示,处理 //william add function 2007-10-09
/// <summary>
/// 宽度
/// </summary>
public int GetWidth(string url)
{
try
{
if(url == "*****" || url.Length < 10)
{
url = "/images/nopic.gif";
}
url = url.Substring(1,url.Length-1);
string urrl = Server.MapPath(url);
double k;
double width=0;
double height=0;
// 注意这里的 urrl 一定要物理路径,不然会抱错。
System.Drawing.Bitmap imgObj = new Bitmap(urrl);
if ((imgObj.Width != 0) && (imgObj.Height != 0))
{
width=imgObj.Width;
height=imgObj.Height;
k=Convert.ToDouble( width/height);
if(k>=1)
{
if (width>=height)
{
width=90;
height=width/k;
}
}
else
{
if (height>=width)
{
height=90;
width=k*height;
}
}
}
int wid = Convert.ToInt32(width);
return wid;
}
catch
{
return 90;
}
}
/// <summary>
/// 高度
/// </summary>
public int GetHeight(string url)
{
try
{
if(url == "*****" || url.Length < 10)
{
url = "/images/nopic.gif";
}
url = url.Substring(1,url.Length-1);
string urrl = Server.MapPath(url);
double k;
double width=0;
double height=0;
System.Drawing.Bitmap imgObj = new Bitmap(urrl);
if ((imgObj.Width != 0) && (imgObj.Height != 0))
{
width=imgObj.Width;
height=imgObj.Height;
k=Convert.ToDouble( width/height);
if(k>=1)
{
if (width>=height)
{
width=90;
height=width/k;
}
}
else
{
if (height>=width)
{
height=90;
width=k*height;
}
}
}
int hid = Convert.ToInt32(height);
return hid;
}
catch
{
return 90;
}
}
#endregion ======================end
/***************************/
前台代码可以加入一个表格的细边框,做到像阿里巴巴显示产品的那种效果.
<table width="100" height="100" border="1" cellspacing="0" cellpadding="0" bordercolordark="#ffffff" bordercolorlight="#000000">
<tr>
<th>
<A href="minishop/shop.aspx?id=<%# DataBinder.Eval(Container.DataItem,"supplier_id") %>&pid=<%# DataBinder.Eval(Container.DataItem,"post_id") %>">
<img class="picline"
height='<%# GetHeight(DataBinder.Eval(Container.DataItem, "pic1").ToString())%>'
width='<%# GetWidth(DataBinder.Eval(Container.DataItem, "pic1").ToString())%>'
src="<%# Deal_Pic(DataBinder.Eval(Container.DataItem,"pic1").ToString()) %>" border="0"></a></th>
</tr>
</table>
============================ 补充
让图片自适应大小的方法
昨天在和动漫网站开发人员的交流中发现一个问题,就是新闻详细页面中的图片不会自适应大小,这其实是一个非常常见的问题,目前我所知的解决办法有以下几种:1. 用后台程序自动生成缩略图
2. 用css调用expression控制图片溢出后的大小;
(http://www.blog.edu.cn/user1/7987/archives/2006/1440861.shtml )
3. 用js写函数控制图片溢出后的大小;
其中后两种都是javascript在起作用,但是工作原理不同,css中调用expression可以解决这个问题,但是解决得不好,因为如果页面中图片一多,expression中的语句会不断被调用,非常耗费客户端内存,容易导致浏览器假死;而直接用javascript,在页面onload的时候就可以轻松解决这个问题,而且只调用一次,比起expression真是好得太多,程序很简单,下面是个简单的例子,我假设这个页面图片宽度不能超过200px,而实际图片宽度是550px:
<body>
<img id="achome" src="http://image2.sina.com.cn/ent/y/2006-10-09/U1819P28T3D1276435F326DT20061009152013.jpg" />
</body>
<script>
var imageArr=document.getElementById(controlID);
var imageRate = imageArr.offsetWidth / imageArr.offsetHeight;
if(imageArr.offsetWidth > maxWidth)
{
imageArr.style.width=maxWidth + "px";
imageArr.style.Height=maxWidth / imageRate + "px";
}
if(imageArr.offsetHeight > maxHeight)
{
imageArr.style.width = maxHeight * imageRate + "px";
imageArr.style.Height = maxHeight + "px";
}
</script>
相关文章推荐
- 用ASP.NET将原始图片按照指定大小按原始比例缩放显示图片
- ASP.NET将原始图片按照指定尺寸等比例缩放显示图片
- ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等。 设置的方式包括: 1. 在layout xml中定义Android:s
- ASP.NET图片等比例显示
- ASP.NET中FileUpload控件上传图片时等比例缩放,然后保存到数据库
- Javascript + Asp.net 让图片自动成比例缩放
- ASP.NET C# 按原图片大小等比例缩放生成缩略图
- ASP控制图片显示的大小(等比例缩放)
- ASP控制图片显示的大小(等比例缩放)
- kindeditor中(文件的上传)与(图片上传缩放),整合(asp.net)
- 学习 ------ ASP.NET C# 按原图片大小缩放生成缩略图
- ASP.NET实现用图片进度条显示投票结果
- Asp.net显示文件夹中的图片
- asp.net 自定义控件实现无刷新上传图片,立即显示缩略图,保存图片缩略图
- ASP.NET中背景图片不能正常显示问题.
- Asp.net图片上传access数据库以及图片显示;点击图片以后显示[图片,以及图片的
- 动态获取缩放图片的长度、宽度和显示比例
- 网页图片垂直剧中 等比例缩放 黑白显示
- 【JS控制图片显示的大小(图片等比例缩放)】
- asp.net 读取远程图片进行编辑后输出