当前位置: 首页 > 编程语言 > C#

如何通过MemoryStream将多页TIFF转为一张长图?分享

时间:2023-04-10 22:56:44 C#

C#:如何通过MemoryStream将多页TIFF转为一张长图?所以我已经能够获取多页TIFF文件并将其转换为单个jpeg图像,但它会展平TIFF。通过展平它,我的意思是它只返回第一页。目标是检索TIFF(通过内存流),打开TIFF的每一页并将其附加到新的jpeg(或任何网络图像)。所以在没有插件的情况下在网络上创建一个长图像。我确实安装了MODI.dll,但我不确定在这种情况下如何使用它,但它是一个选项。你压缩了jpeg吗?https://msdn.microsoft.com/en-us/library/bb882583(v=vs.110).aspx我猜你必须在TIFF中循环每一帧。以下是Splitamulti-pagetifffile的摘录://获取全局唯一标识符(GUID)GuidobjGuid=tiffImage.FrameDimensionsList[0];//创建框架维度FrameDimensiondimension=newFrameDimension(objGuid);//获取.tiff文件中的总帧数intnoOfPages=tiffImage.GetFrameCount(dimension);ImageCodecInfoencodeInfo=null;ImageCodecInfo[]imageEncoders=ImageCodecInfo.GetImageEncoders();for(intj=0;j您应该能够调整上面的逻辑以附加到JPG而不是创建一个单独的文件。如果您遇到可怕的“GDI+中发生一般错误”错误(可以说是Rickroll所有错误)当使用其他答案中建议的SelectActiveFrame方法时,我强烈建议使用System.Windows.Media.Imaging.TiffBitmapDecoder类(您需要添加对PresentationCore.dll框架库的引用)。下面是示例代码(将所有TIFF帧放入标准位图列表):ListbmpLst=newList();使用(varmsTemp=newMemoryStream(data)){TiffBitmapDecoderdecoder=newTiffBitmapDecoder(msTemp,BitmapCreateOptions.PreservePixelFormat,BitmapCacheOption.Default);inttotFrames=decoder.Frames.Count;for(inti=0;i这是BitmapFromSource辅助方法:Add(BitmapFrame.Create(bitmapsource));enc.Save(outStream);bitmap=newBitmap(outStream);}returnbitmap;}对于这个变通方法更多信息,我也推荐阅读我写的这篇博文。上面是C#学习教程:C#:Howtoconvertmulti-pageTIFFtoonelongimagethroughMemoryStream?分享所有内容,如果对大家有用,需要详细了解C#学习教程,希望大家多多关注————本文收集自网络,不代表立场,如涉及侵权,请点击右下角联系管理员删除,如需转载请注明出处: