簡體   English   中英

將字節數組轉換為 C# 中的圖像

[英]Converting byte array to image in C#

我已將圖像(.tif 圖像)轉換為字節數組並保存在數據庫中。 我現在正在從數據庫中檢索該字節數組並希望再次轉換為圖像,但是我正在轉換回圖像的這個字節數組並沒有產生相同的結果。 作為測試(如下所示),出於測試目的,我僅使用圖像而不是從數據庫中讀取數據。

從 Image 到字節數組的初始轉換:

//This is the function I am using:
public static byte[] ImageToByteArray(Image image)
        {
            using (var ms = new MemoryStream())
            {
                image.Save(ms, System.Drawing.Imaging.ImageFormat.Tiff);
                return ms.ToArray();
            }
        }

//Converting to byte array:
var tifImage = Image.FromFile(file.ToString());
var imageContent = ImageToByteArray(tifImage);

現在嘗試轉換回圖像,我正在執行以下操作:

var ms = new MemoryStream(imageContent);
var test1 = Image.FromStream(ms);

但結果似乎不太一樣。 我有一個“拆分”功能,可以拆分 tiff 中的頁面,一個返回 8 個頁面(位圖),另一個返回 1 個。

我對上述內容不太了解,所以需要一點幫助來填補知識空白,請:)

感謝您的幫助!

我找到了一個最終有效的解決方案。 似乎在完成初始ImageToByteArray時,它只執行“第一頁”而不是全部 8。所以我使用以下代碼來轉換整個 tiff 圖像:

var tiffArray = File.ReadAllBytes(file); //The `file` is the actual `.tiff` file

然后我使用以下內容轉換回圖像( response是從我們的API返回的byte[] ):

using (MemoryStream ms = new MemoryStream(response))
            {
                ms.Position = 0;
                Image returnImage = Image.FromStream(ms);

                var splitImages = ImageHelper.Split(returnImage);//This is to split the pages within the tiff
            }

我讀到要使上述工作(並且我對其進行了測試),您對要轉換回圖像的byte[]所做的任何事情都必須在using內完成,因為在using之后的任何using意味着image已被處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM