簡體   English   中英

從內存流與文件流寫入多頁 tif 文件?

[英]Writing a multipaged tif file from memorystream vs filestream?

我正在嘗試使用LibTiff.Net庫並重寫合並工具TiffCP api 以使用內存流。

這個庫有一個Tiff類,通過向這個類傳遞一個流,它可以將 tiff 圖像合並到這個流中。

為了測試,我通過一個Filestream ,我得到了我想要的-它合並了,我能看到多頁TIF。

但是,當我傳遞MemoryStream ,我能夠驗證頁面數據是否在循環時添加到流中,但是當我最后將其寫入文件時,我只能看到第一頁。

var mso = new MemoryStream();
var fso = new FileStream(@"C:\test\ttest.tif",FileMode.OpenOrCreate); //This works
using (Tiff outImage = Tiff.ClientOpen("custom", "w", mso, tso))
{
 //...
 //..
 System.Drawing.Image tiffImg = System.Drawing.Image.FromStream(mso, true);
 tiffImg.Save(@"C:\test\test2.tiff", System.Drawing.Imaging.ImageFormat.Tiff);
 tiffImg.Dispose();
 //..
 //..
}

PS:我需要在內存流中使用它,因為服務器上的某些文件夾權限+供應商 API 的原因。

您可能在數據實際寫入流之前使用了內存流。

請在訪問內存流中的數據之前使用Tiff.Flush()方法。 並且請確保為您創建的每個頁面調用Tiff.WriteDirectory()方法。

編輯:

另請查看 Bob Powell 關於生成多頁 TIFF 文件的文章。 文章展示了如何使用EncoderParameter來實際生成多頁 TIFF。

使用

tiffImg.Save(@"C:\test\test2.tiff", System.Drawing.Imaging.ImageFormat.Tiff);

您可能只保存第一幀。

暫無
暫無

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

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