尝试改善多页TIFF文件分割 - c#

我试图提高将多页TIFF文件拆分为单个页面(存储为字节数组列表)的速度。我正在研究这个TiffSplitter类,以尝试提高Paginate方法的速度。

我听说过LibTiff.net,想知道它会比这个过程快吗?当前,在7页多页TIFF文件上调用Paginate方法大约需要花费1333 ms。

有谁知道将多页TIFF的各个页面作为字节数组检索的最有效方法是什么?或对我如何提高当前正在使用的流程的速度有任何建议?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

namespace TiffSplitter
{
    public class TiffPaginator
    {
        private List<byte[]> paginatedData;
        public List<byte[]> Pages
        {
            get
            {
                return paginatedData;
            }
        }

        public TiffPaginator()
        {
            paginatedData = new List<byte[]>();
        }

        public void Paginate(string Filename)
        {
            using (Image img = Image.FromFile(Filename))
            {
                paginatedData.Clear();
                int frameCount = img.GetFrameCount(FrameDimension.Page);
                for (int i = 0; i < frameCount; i++)
                {
                    img.SelectActiveFrame(new FrameDimension(img.FrameDimensionsList[0]), i);
                    using (MemoryStream memstr = new MemoryStream())
                    {
                        img.Save(memstr, ImageFormat.Tiff);
                        paginatedData.Add(memstr.ToArray());
                    }
                }
            }
        }
    }
}

参考方案

我尝试使用LibTiff.net,但对我而言,速度非常慢。分割单个2页tif的时间以秒为单位。
最后,我决定引用PresentationCore并进行以下操作:
(它将图像拆分为多个文件,但是将输出切换到字节数组应该很简单)

Stream imageStreamSource = new FileStream("filename", FileMode.Open, FileAccess.Read, FileShare.Read);
TiffBitmapDecoder decoder = new TiffBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
int pagecount = decoder.Frames.Count;
if (pagecount > 1)
{
    string fNameBase = Path.GetFileNameWithoutExtension("filename");
    string filePath = Path.GetDirectoryName("filename");
    for (int i = 0; i < pagecount; i++)
    {
        string outputName = string.Format(@"{0}\SplitImages\{1}-{2}.tif", filePath, fNameBase, i.ToString());
        FileStream stream = new FileStream(outputName, FileMode.Create, FileAccess.Write);
        TiffBitmapEncoder encoder = new TiffBitmapEncoder();
        encoder.Frames.Add(decoder.Frames[i]);
        encoder.Save(stream);
        stream.Dispose();                        
    }
    imageStreamSource.Dispose();
}

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…

Json到php,json_decode返回NULL - php

我正在用PHP进行JSON解析器的一些API,用于存储有关遗产的信息。我在解析时遇到问题,因为它返回的是NULL值而不是数组或对象。简单的JSON代码可以很好地解析,但是可以这样:{"success":true,"totalCount":1,"data":[{"id":99694…

将ajax的值存储到javascript变量中 - javascript

我有一个php文件,其中我从服务器获取数据。该php文件的输出是一个包含json格式数据的变量。PHP文件:<?php $dbHostName = "localhost"; $dbUserName = "venseld"; $dbUserPass = "wecuuu"; $dbName = &…