Bil*_*lla 14 .net c# io c#-4.0
TiffBitmapDecoder decoder = new TiffBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
using (MemoryStream allFrameStream = new MemoryStream())
{
foreach (BitmapFrame frame in decoder.Frames)
{
using (MemoryStream ms= new MemoryStream())
{
JpegBitmapEncoder enc = new JpegBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(frame));
enc.Save(ms);
ms.CopyTo(allFrameStream);
}
}
Document documentPDF = new Document();
PdfWriter writer = PdfWriter.GetInstance(documentPDF, allFrameStream);
}
Run Code Online (Sandbox Code Playgroud)
总是allFrameStream的Length=0
.但我可以看到每次迭代ms.Length=989548
.我的代码中的错误是什么.为什么ms.CopyTo(allFrameStream)
不工作?
dko*_*ozl 34
复位Position
的ms
0您填写后:
enc.Save(ms);
ms.Position = 0;
ms.CopyTo(allFrameStream);
Run Code Online (Sandbox Code Playgroud)
复制从当前流中的当前位置开始
小智 6
写入 后ms
, 的位置ms
在其末尾。您必须寻找流的开头,例如:
ms.Seek(0,System.IO.SeekOrigin.Begin);
Run Code Online (Sandbox Code Playgroud)
之后ms.CopyTo
工作正常。