1

我最近将照片添加到我的 SQL 数据库中,并使用 Asp:Image 将它们显示在 *.aspx 页面上。此控件的 ImageUrl 存储在单独的 *.aspx 页面中。它适用于个人资料图片。

我手头有一个新问题。我需要每个用户都能够拥有自己的照片库页面。我希望将照片存储在 sql 数据库中。存储照片并不难。问题是显示照片。我希望照片以缩略图网格方式存储,当用户单击照片时,它应该在单独的页面上显示照片。

做这个的最好方式是什么。显然它不是使用 Asp:Image。我很好奇我是否应该使用 Gridview。如果是这样,我该怎么做?它们应该是为此存储在数据库中的缩略图大小吗?

一旦图片点击其他页面看起来如何,以便它显示正确的图像。我认为通过 url 发送 photoId 是不正确的。

下面是我用来显示个人资料图片的页面中的代码。

protected void Page_Load(object sender, EventArgs e) {

 string sql = "SELECT [ProfileImage] FROM [UserProfile] WHERE [UserId] = '" + User.Identity.Name.ToString() + "'";

 string strCon = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["SocialSiteConnectionString"].ConnectionString;
    SqlConnection conn = new SqlConnection(strCon);

 SqlCommand comm = new SqlCommand(sql, conn);

 conn.Open();

 Response.ContentType = "image/jpeg";

 Response.BinaryWrite((byte[])comm.ExecuteScalar());

 conn.Close();

}
4

6 回答 6

1

“此控件的 ImageUrl 存储在单独的 *.aspx 页面中。它适用于个人资料图片。” - 而不是 .aspx 页面,为什么不使用通用 ASP.NET 处理程序 (.ashx) 呢?它们比 .aspx 更轻量级。只需搜索“ASP.NET 通用处理程序”,您就会找到许多示例。它基本上是您现在在 .aspx 页面后面的代码,但没有所有页面初始化/渲染开销。

“我希望照片以缩略图网格的方式存储,当用户点击照片时,它应该在单独的页面上显示照片。” - 我认为任何支持项目元素模板化的 ASP.NET 可重复控件(例如 ASP.NET 3.5 中的 DataGrid、GridView、Repeater、ListView 等)都应该在这里为您解决问题。只需根据缩略图设置图像或 asp:Image 高度和宽度。将您在 HTML 锚点中使用的任何标签与一个 href 包装到您的页面,以“全尺寸”显示图像。

于 2009-04-06T13:44:03.860 回答
1

让我们解构你的问题:

它们应该是为此存储在数据库中的缩略图大小吗?
是的。第一次请求照片缩略图时生成缩略图并将其缓存在数据库中以供将来访问

显然不是使用 Asp:Image 使用 Asp:Image
是没有问题的。你会没事的

我很好奇我是否应该使用 Gridview
也许Repeater 更好,但是如果您熟悉gridview,您会很好

我认为通过 url 发送 photoId 是不正确的。
这是正确的,但您应该检查照片是否属于当前用户(不要相信 URL。

生成缩略图
您将了解到.net 生成的调整大小的图像质量很差。您应该使用一些 GDI 功夫来获得高质量的图片。请参阅这篇文章http://codebetter.com/blogs/brendan.tompkins/archive/2004/01/26/use-gdi-to-save-crystal-clear-gif-images-with-net.aspx了解更多信息

于 2009-04-06T13:59:37.303 回答
0

Well you would have a page for just displaying a photo (like you have above) but your criteria would be different. You would not use WHERE [UserId] = '" + User.Identity.Name but would have to send a query string id for the id of the photo in the database.

Then when you want the pic in your aspx page you would have to put an image html tag <image src="photo.aspx?id=2" />

How you put the html image tags on the page is not important.

于 2009-04-06T13:22:32.743 回答
0

You can try this or this. They should get you started on the grid side. Correct on sending the imageid from the url. Look at a session variable or hidden control and post the form and read in on the next page.

I would look at a gridview and use a template column in combination with the html image tag in the gridview . Create the thumbnail as they upload it and store them both in the database. From there, you can easily retrieve it. This way displaying the image is quicker and there is no thumbnail conversions necessary at display time.

于 2009-04-06T13:26:03.017 回答
0

如果您不想重新发明轮子,您可以将诸如 Gallery Server Pro (www.galleryserverpro.com) 之类的开源画廊集成到您的站点中。它是用 C# / ASP.NET 编写的,可以做所有你想做的事情。

罗杰

[免责声明] 我是 Gallery Server Pro 的创建者和首席开发人员 [/disclaimer]

于 2009-05-19T13:33:09.733 回答
0

RbmBinaryImage控件将帮助您直接从数据库中显示图像。您可以将 Image 字段直接绑定到 ImageContent 属性,也可以指定是否希望显示为缩略图并提供缩略图大小。

要得到它去http://www.ramymostafa.com/?p=187

于 2009-04-27T08:09:00.643 回答