[英]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.