Сохранение TIFF в формате PNG - PullRequest
1 голос
/ 26 января 2012

У меня есть такой код

using (Image image = System.Drawing.Image.FromStream(sourceStream))
{
    Guid objGuid = image.FrameDimensionsList[0];
    FrameDimension objDimension = new FrameDimension(objGuid);
    int pageCount = image.GetFrameCount(objDimension);

    for (int i = 0; i < pageCount; i++)
    {
          image.SelectActiveFrame(objDimension, i);
          resultStream = new MemoryStream();
          image.Save(resultStream, ToSystemImageFormat(outputFormat));
          result.Add(resultStream.ToArray());
    }
}

цель - сохранить страницу каждого TIFF как png и сохранить ее как массив байтов. Проблема в том, что на моих двух компьютерах WIN7, которые я тестировал, он работает нормально. Но у меня есть один компьютер WinXP, и этот фрагмент кода завершается с исключением «Параметр не действителен». Документ TIFF всегда один и тот же. Кто-нибудь знает, в чем проблема?

Я пытался использовать ImageConverter:

ImageConverter imageConverter = new System.Drawing.ImageConverter();
using (Image image = (Image)imageConverter.ConvertFrom(sourceContent))
{
     Guid objGuid = image.FrameDimensionsList[0];
     FrameDimension objDimension = new FrameDimension(objGuid);
     int pageCount = image.GetFrameCount(objDimension);

     for (int i = 0; i < pageCount; i++)
     {
            image.SelectActiveFrame(objDimension, i);
            resultStream = new MemoryStream();
            image.Save(resultStream, ToSystemImageFormat(outputFormat));
            result.Add(resultStream.ToArray());
      }
}

но тоже не получается, с тем же исключением. Спасибо

UPD # 1: сбой метода Image.FromStream (). Я забыл упомянуть, что большинство документов TIFF конвертируются без каких-либо проблем. Но на WIN7 все хорошо даже с этими конкретными.

Ответы [ 2 ]

1 голос
/ 26 января 2012

Я рекомендую попробовать LibTiff.Net .С другой стороны, вы можете использовать libtiff (код C ++), но я подозреваю, что LibTiff.Net будет проще вызывать из вашего кода .Net.

1 голос
/ 26 января 2012

Я знаю, что winxp имеет ограниченную поддержку png. Вы не можете загружать файлы значков, которые на самом деле являются сжатыми pngs (стандарт на win 7) в .net 4.0, работающем на winxp, вы получаете то же исключение.

...