RasterCodecs异步操作

LEADTOOLS支持加载和保存图像使用。net的异步操作异步等待功能。这种支持包括在。net标准工具包和添加通过扩展方法在。net框架使用的工具包Leadtools.Async.dll组装。

RasterCodecs类包含以下异步处理图像的方法:

方法 描述
< CodecsImageInfo > RasterCodecs任务。bool totalPages GetInformationAsync (ILeadStream流,) 异步获取图像信息从一个包含图像数据流。
< CodecsImageInfo > RasterCodecs任务。bool totalPages GetInformationAsync (ILeadStream流,int pageNumber) 异步获取图像信息的特定页面包含图像数据流。
< RasterImage > RasterCodecs任务。负载(ILeadStream流) 异步加载指定的图像流使用默认选项。
< RasterImage > RasterCodecs任务。负载(ILeadStream流,int pageNumber) 从图像流异步加载指定的页面使用默认选项。
< RasterImage > RasterCodecs任务。负载(int, int pageNumber ILeadStream流bitsPerPixel, CodecsLoadByteOrder秩序,int珍宝,int lastPage) 异步加载指定的图像流使用特定选项。
RasterCodecs任务。保存(RasterImage形象,ILeadStream流,RasterImageFormat格式,int bitsPerPixel) 异步的保存一个或多个页面RasterImage领先流在任何支持的压缩和未压缩格式。
RasterCodecs任务。保存(RasterImage形象,ILeadStream流,RasterImageFormat格式,int bitsPerPixel, int珍宝,int lastPage, int firstSavePageNumber, CodecsSavePageMode pageMode) 异步保存RasterImage领先流在任何支持的压缩和未压缩格式。
< bool > RasterCodecs任务。CanLoadSvgAsync (ILeadStream流) 异步判断指定的图片,文档或SVG矢量数据可以被加载。
< bool > RasterCodecs任务。IsSvgAsync (ILeadStream流) 异步迅速决定是否包含一个SVG图像的URL。
< ISvgDocument > RasterCodecs任务。LoadSvgAsync (ILeadStream流,int pageNumber CodecsLoadSvgOptions选项) 异步加载一个页面包含一个图像,从流文档或SVG矢量文件

所有这些方法接受一个类型的对象作为第一个参数ILeadStream决定输入流(在负载或获取信息)或输出流(拯救)使用。方法返回一个。net任务对象与结果,可以使用异步关键字。

ILeadStream是一个接口,具有以下LEADTOOLS实现:

描述
LeadStream ILeadStream支持任何。netSystem.IO.Stream
LeadFileStream ILeadStream支持磁盘物理文件。
HttpClientLeadStream ILeadStream支持远程URL

主要的实现LeadStream类包装一个。netSystem.IO.StreamLeadStream还包含了工厂可用于快速创建的类成员ILeadStream对象形成各种输入或输出源。

LeadStream.Factory.FromStream:包装一个。netSystem.IO.Stream。如果输入/输出图像数据在. net流,然后简单地创建一个新的ILeadStream使用以下:

c#
System.IO.Streamstream = ...ILeadStream leadStream = LeadStream.Factory.FromStream(流);

例如,下面的代码片段将加载一个图像从。net内存流:

c#
公共静态异步任务的例子(){/ /文件加载到内存流字符串文件名=@“C: \ LEADTOOLS21 \资源\ \ ocr1.tif图像”;使用(流流=MemoryStream (File.ReadAllBytes(文件名))){/ /创建一个从. net ILeadStream流使用(ILeadStream leadStream = LeadStream.Factory.FromStream(流)){/ /异步加载图片使用(varrasterCodecs =RasterCodecs ()){使用(RasterImage图像=等待rasterCodecs.LoadAsync (leadStream)){/ /使用的图像Console.WriteLine ($“加载图片,尺寸是{形象。宽度},{形象。高度}像素”);}}}}}

FromStream方法接受的autoDisposeStream布尔参数,默认情况下。这个参数决定的所有权底层流并将到ILeadStream.DisposeStream财产。例如,上面的代码可以修改如下内存流的所有权转移ILeadStream因此时将处理leadStream处理对象:

c#
/ /使用从这里移除流流=MemoryStream (File.ReadAllBytes(文件名));/ /创建一个从. net ILeadStream流/ /通过真正的所有权转移到ILeadStream:使用(ILeadStream leadStream = LeadStream.Factory.FromStream(流,真正的)){/ /应该是正确的:System.Diagnostics.Debug.Assert (leadStream.DisposeStream);/ /异步加载图片使用(varrasterCodecs =RasterCodecs ()){使用(RasterImage图像=等待rasterCodecs.LoadAsync (leadStream)){/ /使用的图像Console.WriteLine ($“加载图片,尺寸是{形象。宽度},{形象。高度}像素”);}}/ /下一个语句处理ILeadStream既然DisposeStream财产是真的,也/ /“流”也将处理}

FromStream支持seekable和non-seekable流。如果non-seekable流,它将在内部使用RasterCodecs饲料加载机制来执行动作。指RasterCodecs.StartFeedLoad为更多的信息。示例使用non-seekable流(在这个例子中,一个流的资源远程URL):

c#
使用(varhttpClient =HttpClient ()){varurl =“https://demo.leadtools.com/images/tiff/ocr1.tif”;使用(var流=等待httpClient.GetStreamAsync (url)){/ /创建一个从. net ILeadStream流使用(ILeadStream leadStream = LeadStream.Factory.FromStream(流)){/ /异步加载图片使用(varrasterCodecs =RasterCodecs ()){使用(RasterImage图像=等待rasterCodecs.LoadAsync (leadStream)){/ /使用的图像Console.WriteLine ($“加载图片,尺寸是{形象。宽度},{形象。高度}像素”);}}}}}

HttpClientLeadStream的实现ILeadStream旨在执行完全按照上面的和LeadStream.Factory包含了LeadStream.Factory.FromUri辅助方法用于创建ILeadStream从。net对象Uri对象。例如,上面的代码可以简化如下:

c#
varurl =“https://demo.leadtools.com/images/tiff/ocr1.tif”;/ /创建一个ILeadStream URI使用(ILeadStream leadStream =等待LeadStream.Factory.FromUri (Uri (url))){/ /异步加载图片使用(varrasterCodecs =RasterCodecs ()){使用(RasterImage图像=等待rasterCodecs.LoadAsync (leadStream)){/ /使用的图像Console.WriteLine ($“加载图片,尺寸是{形象。宽度},{形象。高度}像素”);}}}

HttpClientLeadStream自动创建一个. netHttpClient在静态对象和设置它HttpClientLeadStream.HttpClient使用,可用于自定义选项。

LeadFileStream的实现ILeadStream是一个设计来处理磁盘上的物理文件。一个对象可以创建所需的访问和共享模式或使用LeadStream.Factory.OpenFileLeadStream.Factory.CreateFile助手方法如下:

c#
字符串inputFileName =@“C: \ LEADTOOLS21 \资源\ \ ocr1.tif图像”;字符串outputFileName =@“C: \ LEADTOOLS21 \资源\ \ ocr1-saved.png图像”;RasterImage形象;使用(varrasterCodecs =RasterCodecs ()){/ /创建一个ILeadStream从输入文件使用(ILeadStream leadStream = LeadStream.Factory.OpenFile (inputFileName)){/ /异步加载图片形象=等待rasterCodecs.LoadAsync (leadStream);}/ /创建一个ILeadStream输出文件/ /创建一个ILeadStream从输入文件使用(ILeadStream leadStream = LeadStream.Factory.CreateFile (outputFileName)){/ /保存图片异步等待rasterCodecs。SaveAsync(图像、leadStream RasterImageFormat。Png, 0);}}

LEADTOOLS成像、医学和文档