ImageMagick.MagickCoderErrorException:无法读取偏移量的目录

时间:2017-11-19 23:59:33

标签: c# imagemagick

我有以下c#代码:

struct

它产生以下运行时错误:

private void BurstPdf(string tifName, string targetfolder)
{
    Console.WriteLine("BurstPdf({0}, {1})", tifName, targetfolder);

    using (MagickImageCollection tiffPageCollection = new MagickImageCollection())
    {
        tiffPageCollection.Read(tifName);    // Fails on this line.

以下是我试图找到解决此问题的方法:

  1. 添加了Console.WriteLine并痛苦地确认该文件存在。此外,该文件源自Unhandled Exception: ImageMagick.MagickCoderErrorException: Failed to read directory at offset 51038729. `TIFFReadDirectory' @ error/tiff.c/TIFFErrors/645 at ImageMagick.MagickImageCollection.NativeMagickImageCollection.ReadFile(MagickSettings settings) at ImageMagick.MagickImageCollection.AddImages(String fileName, MagickReadSettings readSettings, Boolean ping) at ImageMagick.MagickImageCollection.Read(String fileName) ,因此它是指定文件名的代码。
  2. 用Google搜索错误消息。有类似的错误说文件已损坏。
  3. 我在MS Paint中打开文件以确认它没有损坏。
  4. 我可以在Windows资源管理器中看到缩略图,表明它没有损坏。
  5. 我可以在Windows Photo Viewer中打开该文件,表明它没有损坏。
  6. 我将文件复制到Mac并显示.tif为全黑色,取景器缩略图全黑。有很多人声称这是预览中的错误。
  7. 我在Mac上的“获取信息”中打开了文件,它将显示缩略图。它报告为5100x6600灰色,没有alpha通道。这是一个65MB的文件
  8. 我们使用相同的技术生成其他文件(打印到配置为输出.tif而不是打印的打印机驱动程序,并且能够使用imagemagick读取它们。但是,它们不是那么大。

    如何在imagemagick中读取此文件?

    [编辑] 我尝试了第二个22MB的文件,它失败并出现此错误:

    Directory.GetFiles()

    这看起来像是我希望使用损坏的文件的消息,但它能够与其他更大的文件一样查看。

1 个答案:

答案 0 :(得分:0)

我能够通过使用Windows Photo Viewer将文件打印到.pdf来修复.tif文件。然后在Mac上使用预览将文件导出为.tif。

将打印选项设置为不锐化图片非常重要,否则页面上的条形码会被遮挡。

我在导出文件时更改了文件的DPI,以确保它重新编码文件。