Dot-Net

從字節數組中獲取 Image 對象

  • January 23, 2014

我有一個圖像的字節數組(儲存在數據庫中)。我想創建一個 Image 對象,創建幾個不同大小的圖像並將它們儲存回數據庫中(將其保存回字節數組)。

我不擔心數據庫部分或調整大小。但是有沒有一種簡單的方法來載入 Image 對象而不將文件保存到文件系統,然後在我完成調整大小後將其放回字節數組中?如果可以的話,我想在記憶中做這一切。

Something like:
Image myImage = new Image(byte[]);
or
myImage.Load(byte[]);

您將使用 MemoryStream 來執行此操作:

byte[] bytes;
...
using (var ms = new System.IO.MemoryStream(bytes)) {
  using(var img = Image.FromStream(ms)) {
     ...
  }
}

根據您對另一個答案的評論,您可以嘗試對儲存在 a 中的圖像執行轉換,byte[]然後將結果返回為 another byte[]

public byte[] TransformImage(byte[] imageData)
{
   using(var input = new MemoryStream(imageData))
   {
       using(Image img = Image.FromStream(input))
       {
           // perform your transformations

           using(var output = new MemoryStream())
           {
               img.Save(output, ImageFormat.Bmp);

               return output.ToArray();
           }
       }
   }
}

這將允許您傳入byte[]儲存在數據庫中的數據,執行您需要的任何轉換,然後返回一個byte[]可以儲存回數據庫的新數據。

引用自:https://stackoverflow.com/questions/3290060