gpt4 book ai didi

asp.net - 通过 .ashx 从数据库返回调整大小的图像

转载 作者:行者123 更新时间:2023-12-02 14:55:05 26 4
gpt4 key购买 nike

我在 SO 和其他地方发现了一些类似的问题,但没有什么完全符合我的要求(或者,也许我太愚蠢了,无法将这些点联系起来!)

我希望从数据库中存储为 varbinary(max) 的全尺寸图像返回缩略图图像。我将在画廊风格的 View 中使用缩略图,因此小尺寸/高效加载至关重要。我一直在使用 .ashx 将全尺寸图像返回到绑定(bind)的 asp.net 图像控件中,代码如下:

Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

Dim conn As New SqlConnection()
conn.ConnectionString = *connectionstring*

Dim cmd As New SqlCommand()
cmd.Connection = conn
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "GetEmplHeadShot"

Dim emplID As New SqlParameter("@emplID", context.Request.QueryString("emplid"))
cmd.Parameters.Add(emplID)

conn.Open()

Dim myReader As SqlDataReader = cmd.ExecuteReader
If myReader.Read Then

context.Response.BinaryWrite(myReader("HeadShot"))
context.Response.ContentType = "image/jpeg"

End If
myReader.Close()
conn.Close()

End Sub

我意识到最好在上传时解决重新调整大小的问题,并将较小的图像存储为离散列。 但与此同时,是否可以对处理程序进行编程以动态调整图像大小? 理想情况下,我能够传递额外的查询字符串参数,例如图像中的 isResized绑定(bind),允许将相同的处理程序用于全尺寸和调整尺寸的图像。

任何建议/帮助将不胜感激。关于替代方法的想法(即“你的做法完全错误”)也将受到欢迎。

最佳答案

抱歉,我不是 VB 人员,但如果您可以阅读 C#,这里有一个示例。您需要为丢失的参数等添加一些处理,但这可以概述您的基本方法。

        public void ProcessRequest( HttpContext context )
{
int height = Convert.ToInt32(context.Request["height"]);
int width = Convert.ToInt32(context.Request["width"]);


//Get image from database here, put into a stream
var stream = new MemoryStream(); //this would represent the stream from your database image

using( var original = Image.FromStream( stream ) )
{
using( var resized = new Bitmap(width, height, PixelFormat.Format24bppRgb) )
{
using( var g = Graphics.FromImage( resized ) )
{
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;

g.DrawImage( original, new Rectangle( new Point( 0, 0 ), new Size(width, height) ) );

var resizedStream = new MemoryStream();
resized.Save(resizedStream, ImageFormat.Jpeg);

context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(resizedStream.GetBuffer());
context.Response.End();
}
}
}

}

关于asp.net - 通过 .ashx 从数据库返回调整大小的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6986247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com