2013-02-11 28 views
0

我在我的智慧的結尾在這裏試圖找出我做錯了什麼。我的目標是簡單地將圖像旋轉90度並將更改後的完整圖像保存迴文件系統,然後更新數據庫中的縮略圖版本。文件系統映像被適當地更改,但是當映像保存回數據庫時,它只會保存前28個字符。 SQL報告沒有錯誤。當更新圖像時,二進制數據接縫被截斷

關於我在這裏做錯了什麼的任何想法將非常感激。 在此先感謝。

Image image = Image.FromFile(image_path); 
    image.RotateFlip(RotateFlipType.Rotate90FlipNone); 
    image.Save(image_path, System.Drawing.Imaging.ImageFormat.Jpeg); 

    Byte[] thumbnail = null; 
    System.Drawing.Image thumb = image.GetThumbnailImage(72, 47,() => false, IntPtr.Zero); 
    thumbnail = imageToByteArray(thumb); 
    image.Dispose(); 

     string conn = ConfigurationManager.ConnectionStrings["MY_DATABASE"].ConnectionString; 
     SqlConnection sqlConn = new SqlConnection(conn); 
     SqlCommand sqlComm = new SqlCommand(); 
     sqlComm = sqlConn.CreateCommand(); 
     sqlComm.CommandText = @"UPDATE MY_TABLE SET pic='@thumbnail' WHERE pic_id= cast(@pic_id As Int) "; 
     sqlComm.Parameters.Add("@thumbnail", SqlDbType.Image, thumbnail.Length).Value = thumbnail; 
     sqlComm.Parameters.Add("@pic_id", SqlDbType.Int); 
     sqlComm.Parameters["@pic_id"].Value = Convert.ToInt32(pic_id); 
     try 
     { 
      sqlConn.Open(); 
      Int32 rowsAffected = sqlComm.ExecuteNonQuery(); 
      context.Response.Write("rowsAffected:" + rowsAffected + "<br/>"); 
     } 
     catch (Exception ex) 
     { 
      context.Response.Write(ex.Message); 
     } 
     //sqlConn.Open(); 
     //sqlComm.ExecuteNonQuery(); 
     sqlConn.Close(); 

     context.Response.BinaryWrite(thumbnail); 

回答

1

MY_TABLE SET PIC = '@縮略圖'

看起來可疑,爲什麼加引號?

在猜測,我會說你覆蓋位圖中的標題,與任何位模式字符串「@thumbnail」相當於您設置標題中的長度「28」。

http://en.wikipedia.org/wiki/BMP_file_format

+0

你太棒了 - 非常感謝你! – user2059863 2013-02-11 00:22:11

相關問題