2013-12-09 41 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