| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1951 人关注过本帖
标题:[求助]关于页面缩略图不能显示的问题??
只看楼主 加入收藏
tel1982
Rank: 3Rank: 3
来 自:水星
等 级:新手上路
威 望:8
帖 子:852
专家分:0
注 册:2006-10-21
收藏
 问题点数:0 回复次数:16 
[求助]关于页面缩略图不能显示的问题??
下面的这段代码是缩略图的实现:
getThunbnail.aspx:
private void Page_Load(object sender, System.EventArgs e)
{
//获取几个参数,用以生成缩略图片
//设置一个默认参数生成BitMap
Response.Clear();
try
{
string originalFileName=Server.MapPath(Request["fn"]);
int thumbnailWidth=Convert.ToInt32(Request["tw"].ToString());
int thumbnailHeight=Convert.ToInt32(Request["th"].ToString());
System.Drawing.Image img=System.Drawing.Image.FromFile(originalFileName);
System.Drawing.Imaging.ImageFormat thisFormat=img.RawFormat;
System.Drawing.Size newSize=this.GetNewSize(thumbnailWidth,thumbnailHeight,img.Width,img.Height);
System.Drawing.Bitmap outBmp=new System.Drawing.Bitmap(thumbnailWidth,thumbnailHeight);
System.Drawing.Graphics g=System.Drawing.Graphics.FromImage(outBmp);
//设置画布的描绘质量
g.CompositingQuality=System.Drawing.Drawing2D.CompositingQuality.HighQuality;
g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.InterpolationMode=System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.Clear(System.Drawing.Color.FromArgb(0xff,0xf9,0xff,240));
Rectangle _Vb_t_record_0 = new Rectangle((int) Math.Round((double) (((double) (thumbnailWidth - newSize.Width)) / 2)), (int) Math.Round((double) (((double) (thumbnailHeight - newSize.Height)) / 2)), newSize.Width, newSize.Height);
g.DrawImage(img, _Vb_t_record_0, 0, 0, img.Width, img.Height, GraphicsUnit.Pixel);
g.Dispose();
if(thisFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))
{
Response.ContentType="image/gif";
}
else
{
Response.ContentType="image/jpeg";
}
//设置压缩质量
System.Drawing.Imaging.EncoderParameters encoderParams=new System.Drawing.Imaging.EncoderParameters();
long[] quality=new long[] {100};
System.Drawing.Imaging.EncoderParameter encoderParam=new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality,quality);
encoderParams.Param[0]=encoderParam;
//获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象。
System.Drawing.Imaging.ImageCodecInfo[] arrayICI=System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();
System.Drawing.Imaging.ImageCodecInfo jpegICI=null;
int length = arrayICI.Length - 1;
for(int fwd=0;fwd<=length;fwd++)
{
if(arrayICI[fwd].FormatDescription.Equals("JPEG"))
{
jpegICI=arrayICI[fwd];
break;
}
}
if(jpegICI!=null)
{
outBmp.Save(Response.OutputStream,jpegICI,encoderParams);
}
else
{
outBmp.Save(Response.OutputStream,thisFormat);
}
}
catch(Exception ex)
{
return;
}
// 在此处放置用户代码以初始化页面
}
public System.Drawing.Size GetNewSize(int maxWidth,int maxHeight,int width,int height)
{
double w=0.0;
double h=0.0;
double sw=Convert.ToDouble(width);
double sh=Convert.ToDouble(height);
double mw=Convert.ToDouble(maxWidth);
double mh=Convert.ToDouble(maxHeight);
if(sw<mw && sh<mh)
{
w=sw;
h=sh;
}
else
{
if((sw/sh)>(mw/mh))
{
w=maxWidth;
h=(w*sh)/sw;
}
else
{
h=maxHeight;
w=(h*sw)/sh;
}
}
return new System.Drawing.Size(Convert.ToInt32(w),Convert.ToInt32(h));
}
我想要在这个页面引用上面的实现方法
<%@ Register TagPrefix="uc1" TagName="register" Src="GloabalUserControls/register.ascx" %>
<%@ Register TagPrefix="uc1" TagName="footer" Src="GloabalUserControls/footer.ascx" %>
<%@ Register TagPrefix="uc1" TagName="header" Src="GloabalUserControls/header.ascx" %>
<%@ Page language="c#" Codebehind="szll.aspx.cs" AutoEventWireup="false" Inherits="jswljx.szll" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>szll</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<LINK href="myCss/GLOBAL.CSS" type="text/css" rel="stylesheet">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<TABLE id="Table1" cellSpacing="1" cellPadding="0" width="768" align="center" border="0">
<TR>
<TD align="center" colSpan="2"><uc1:header id="Header1" runat="server"></uc1:header></TD>
</TR>
<tr>
<td align="center" colSpan="2">
<TABLE id="Table4" borderColor="#99ccff" cellSpacing="0" cellPadding="0" width="100%" align="center"
border="1">
<TR>
<TD align="right"><asp:textbox id="txtSearch" runat="server"></asp:textbox><asp:button id="btnSearch" runat="server" Text="搜 索"></asp:button>&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
</td>
</tr>
<TR>
<TD style="WIDTH: 234px" width="234"><uc1:register id="Register1" runat="server"></uc1:register></TD>
<TD><asp:datalist id="dlTeacher" runat="server" RepeatDirection="Horizontal" RepeatColumns="3">
<ItemTemplate>
<TABLE id="Table2" style="WIDTH: 129px; HEIGHT: 129px" cellSpacing="1" cellPadding="1"
width="129" align="center" border="0">
<TR>
<TD vAlign="middle" align="center"><A title='<%# DataBinder.Eval(Container.DataItem,"teaName")%>' href='<%#"showTeacherDetails.aspx?teaID="+DataBinder.Eval(Container.DataItem,"teaID")%>' target=_blank>
<asp:Image id="Image1" runat="server" Width="128px" Height="128px" ImageUrl='<%# DataBinder.Eval(Container.DataItem,"photoPath")%>'>
</asp:Image></A></TD>
</TR>
<TR>
<TD align="center"><A title='<%# DataBinder.Eval(Container.DataItem,"teaName")%>' href='<%#"showTeacherDetails.aspx?teaID="+DataBinder.Eval(Container.DataItem,"teaID")%>' target=_blank><%#GetSub(DataBinder.Eval(Container.DataItem,"teaName"),10)%>
<asp:Label id="lblTeaname" runat="server"></asp:Label></A></TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:datalist></TD>
</TR>
<tr>
<td align="center" colSpan="2">
<TABLE id="Table3" borderColor="#99ccff" cellSpacing="0" cellPadding="1" width="100%" align="center"
border="1">
<TR>
<TD align="right">共<asp:label id="lblRecordCount" runat="server"></asp:label>条记录&nbsp;共<asp:label id="lblPageCount" runat="server"></asp:label>页&nbsp;第<asp:label id="lblCurrentPage" runat="server"></asp:label>页&nbsp;
<asp:linkbutton id="lbtnFirst" runat="server">首页</asp:linkbutton>&nbsp;
<asp:linkbutton id="lbnPrevPage" runat="server">上一页</asp:linkbutton>&nbsp;
<asp:linkbutton id="lbnNextPage" runat="server">下一页</asp:linkbutton>&nbsp;
<asp:linkbutton id="lbtnLast" runat="server">末页</asp:linkbutton>&nbsp;
<asp:dropdownlist id="ddlPage" runat="server" AutoPostBack="True" Width="46px"></asp:dropdownlist>&nbsp;</TD>
</TR>
</TABLE>
</td>
</tr>
<TR>
<TD align="center" colSpan="2"><uc1:footer id="Footer1" runat="server"></uc1:footer></TD>
</TR>
</TABLE>
</FONT>
</form>
</body>
</HTML>
我按照网上的说法好像不行,请高手给与指点,在这里我先说声谢谢了!

[此贴子已经被作者于2007-4-26 21:18:01编辑过]

搜索更多相关主题的帖子: 缩略 页面 
2007-04-23 17:27
tel1982
Rank: 3Rank: 3
来 自:水星
等 级:新手上路
威 望:8
帖 子:852
专家分:0
注 册:2006-10-21
收藏
得分:0 
难道没有哪位大侠能够解决吗?
这一个对我来说确实有点难度,还请大家不吝赐教!

Face up to life with smiles no matter what happens
2007-04-24 08:47
cyyu_ryh
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1899
专家分:176
注 册:2006-10-21
收藏
得分:0 
所谓缩略图是用户任意改变起大小吗?

有事无事都密我. MSN: cyyu_ryh@hotmail.co.jp E-mail: cyyu_ryh@
2007-04-24 13:07
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
收藏
得分:0 

我看了你的页面代码,但是没有发现对getThunbnail.aspx的请求。
如果要使用getThunbnail.aspx,最终发送到浏览器的标记中,显示缩略图的地方应该是如下形式:

<img src="getThunbnail.aspx?fn=???&tw=?&th=?" alt="" />
如果你的页面和getThunbnail.aspx不在一个目录层次下,那么应该使用相对或者绝对路径来找到getThunbnail.aspx。
fn、tw、th这些参数分别告诉getThunbnail.aspx,原图片的路径、缩略图的宽和高。

这个生成缩略图的网页及其代码是我贴在这论坛上的。其实并不好用,原因就在于即使获得了代码,要正确使用它还是得费些功夫。况且原先我只是用VB.NET写的。之后,我又发布了一个控件集,将生成缩略图封装成一个Web控件。如同TextBox等那些控件的使用方法是一致的。同样也可以将其包含在数据显示控件的模板列中。
这个控件集可以从这里找到:http://bbs.bc-cn.net/viewthread.php?tid=91076&star=at#

控件我是用C#写的,包括原代码也在里面。不过没关系,在任何一种编程语言中都可以使用。因为他们是以DLL程序集的形式存在的。如果有兴趣的话,你可以研究一下,其实大同小异。


铲铲是也
2007-04-25 02:24
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
收藏
得分:0 
还有一点要补充的是,如果把控件放置在数据显示控件(如Repeater,DataGrid等)的模板列中,可能会有一些兼容问题。例如,在Page_Load中显式调用this.DataBind()时,缩略图绘制会失败。或者在某些情况下,数据显示控件的模板中的缩略图绘制也会失效。

关于这种问题,有一种解决办法是,在页面的其他位置再放置一个缩略图控件,但将它Visible设置为False。
这是依靠页面请求时在Page控件集中捕获一个缩略图控件实例来完成绘制。这并不是根本解决之道。根本解决办法我还没有研究出来。
由于没有添加设计时支持,所以这个控件在VS中显示就只是一串字符,并没有“所见即所得”的效果。有兴趣的朋友可以为其添加设计时支持。

铲铲是也
2007-04-25 02:35
tel1982
Rank: 3Rank: 3
来 自:水星
等 级:新手上路
威 望:8
帖 子:852
专家分:0
注 册:2006-10-21
收藏
得分:0 

我想要问一下楼上的大侠,<img src="getThunbnail.aspx?fn=???&tw=?&th=?" alt="" />这里只能用html的image控件吗?如果我用的是web的image控件,又应该怎么写呢?


Face up to life with smiles no matter what happens
2007-04-25 07:26
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
收藏
得分:0 

要说明img标记不是控件,上面没有任何runat="server"的字样。
如果要用Image控件,同样,恰当地构造ImageUrl属性,也可以达到效果。


铲铲是也
2007-04-26 06:16
tel1982
Rank: 3Rank: 3
来 自:水星
等 级:新手上路
威 望:8
帖 子:852
专家分:0
注 册:2006-10-21
收藏
得分:0 

楼上的大侠,能否麻烦你帮我构造一下,我确实比较笨,不知道应该怎么构造,我的源代码在一楼都有,你看一下,我现谢谢你了!


Face up to life with smiles no matter what happens
2007-04-26 21:15
tel1982
Rank: 3Rank: 3
来 自:水星
等 级:新手上路
威 望:8
帖 子:852
专家分:0
注 册:2006-10-21
收藏
得分:0 
我的绑定内容在红色区域,你说我在image那里应该怎么绑定呢?我的那个gutThumbnail.aspx页面在根目录下面。

Face up to life with smiles no matter what happens
2007-04-26 21:19
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
收藏
得分:0 
&lt;asp:Image ID="Image1" runat="server" ImageUrl='&lt;%# "~/getThumbnail.aspx?fn=" + this.Server.UrlEncode(DataBinder.Eval(Container.DataItem, "photopath")) + "&amp;th=100&amp;tw=100" %&gt;' &gt;&lt;/asp:Image&gt;

铲铲是也
2007-04-26 22:31
快速回复:[求助]关于页面缩略图不能显示的问题??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018793 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved