2013-12-09 40 views
0

我有一个从MySql返回的图像。它的数据类型是Mysql中的图像。我用ashx处理图像。 下面的代码显示我的ashx文件。如何旋转由ashx处理程序检索的图像

string imageID = context.Request.QueryString["imageID"]; 
using(SqlConnection objConnection = new SqlConnection(portalConnectionString)) 
{ 
    objConnection.Open(); 
    SqlCommand fetchTaskImageCMD = new SqlCommand("fetch_task_image", objConnection); 
    fetchTaskImageCMD.CommandType = CommandType.StoredProcedure; 
    fetchTaskImageCMD.Parameters.Add("@IMAGE_ID", SqlDbType.VarChar).Value = imageID; 

    try 
    { 
     SqlDataReader dr = fetchTaskImageCMD.ExecuteReader(); 
     dr.Read(); 

     byte[] bufferImg = (Byte[])dr[0]; 

     context.Response.OutputStream.Write(bufferImg, 0, bufferImg.Length); 
    } 

    catch 
    { 
     System.Diagnostics.Debug.WriteLine("Image Handler Failed : /DesktopModules/ImageHandler.ashx"); 
    } 

    objConnection.Close(); 
} 

下面的代码显示了我是如何从我的asp.net代码中调用我的ashx文件在c#中的类后面。

protected void Page_Load(object sender, System.EventArgs e) 
{ 
    FetchedImage.ImageUrl = "/DesktopModules/ImageHandler.ashx?imageType=" + imageType + "&imageID=" + imageID; 
} 

我的问题是我将如何旋转此图像并保存回数据库,然后。

如有任何意见,将不胜感激。

回答

0

如果您想旋转它并将其保存回数据库,请在服务器上使用GDI +,而不是将数据流送回客户端。

System.Drawing.Image可以从字节数组中实例化,并且可以使用GDI +方法旋转图像,从旋转后的图像中提取一个字节数组并保存。

让我知道如果你需要一个例子,但谷歌搜索System.Drawing.Image会帮助你。

+0

感谢您的意见。我想出了一种方法,让我通过RotateFlipType旋转图像并将其转换回Byte数组,然后将所有数据保存回ashx文件。但是,我发现这非常慢,因为每次旋转图像时都需要回发。我想知道是否有更好的方法来做到这一点,例如旋转客户端的图像,只保存它,如果我点击保存按钮。 – user1797512

+0

试试这个 - https://code.google.com/p/jqueryrotate/ – sh1rts

+0

我先试着jquery.I必须切换到位图而不是jquery,因为javascript不会旋转“实际”图像文件。 – user1797512