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的ms0您填写后:
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工作正常。
| 归档时间: |
|
| 查看次数: |
8623 次 |
| 最近记录: |