将不同的图片格式(jpg,gif,png等)转换为TIFF格式

use*_*509 18 c# asp.net tiff image

我正在通过OCR实现从图像中读取文本.它仅支持TIFF格式图像.

所以,我需要将其他格式转换为TIFF格式.可以吗?请帮助

提供一些参考.

Jac*_*cob 22

如果Image在.NET中创建对象,则可以将其另存为TIFF.它是您可以使用的众多ImageFormat选项之一.

例:

var png = Image.FromFile("some.png");
png.Save("a.tiff", ImageFormat.Tiff);
Run Code Online (Sandbox Code Playgroud)

您需要System.Drawing在项目中包含程序集.该程序集将为您提供大量的图像处理功能.希望有所帮助.


may*_*ʎɐɯ 13

介绍说明:

  1. 该答案涵盖了赏金问题;即:如何将多个文件转换为1个tiff?例如,假设有pdf,jpeg,png,而我想在其中创建1个tiff?
  2. 在此答案中,我使用https://imagemagick.org/index.php的 .net实现进行图像处理,使用Ghostscript来帮助读取AI / EPS / PDF / PS文件,因此我们可以将其转换为可信且可靠的图像文件官方消息。
  3. 在我回答了这个问题之后,我的电子邮件中又问了一些其他合并选项的问题,因此我扩大了回答范围。

IMO有两个实现目标的步骤:

  1. 安装进行pdf转换所需的工具
  2. 从源获取所有图像,包括pdf格式的文件,并将它们合并到一个tiff文件中。

1.安装有助于Pdf到Image转换的工具:

仅当您打算转换AI / EPS / PDF / PS文件格式时,才需要执行步骤1。否则,请跳至步骤2。

为了使pdf转换为任何图像格式成为可能,我们需要一个可以读取pdf文件的库,并且需要一个将其转换为图像类型的工具。为此,我们将需要安装Ghostscript(GNU Affero通用公共许可证)。

之后,我们需要在Visual Studio中的nuget link中为.net 安装ImageMagick.net

到目前为止,一切都很好。

2.代码部分

第二个也是最后一步就是我们需要读取的文件夹位置的文件(PNG,JPG,BMP,PDF等),并添加每个文件MagickImageCollection,然后我们有几个选项合并使用AppendHorizontallyAppendVerticallyMontage或者多页TIFF。ImageMagick具有大量功能,例如调整大小,分辨率等,这仅是演示合并功能的示例:

public static void MergeImage(string src, string dest, MergeType type = MergeType.MultiplePage)
{
    var files = new DirectoryInfo(src).GetFiles();

    using (var images = new MagickImageCollection())
    {
        foreach (var file in files)
        {
            var image = new MagickImage(file)
            {
                Format = MagickFormat.Tif,
                Depth = 8,
            };
            images.Add(image);
        }

        switch (type)
        {
            case MergeType.Vertical:
                using (var result = images.AppendVertically())
                {
                    result.AdaptiveResize(new MagickGeometry(){Height = 600, Width = 800});
                    result.Write(dest);
                }
                break;
            case MergeType.Horizontal:
                using (var result = images.AppendHorizontally())
                {
                    result.AdaptiveResize(new MagickGeometry(){Height = 600, Width = 800});
                    result.Write(dest);
                }
                break;
            case MergeType.Montage:
                var settings = new MontageSettings
                {
                    BackgroundColor = new MagickColor("#FFF"),
                    Geometry = new MagickGeometry("1x1<")
                };

                using (var result = images.Montage(settings))
                {
                    result.Write(dest);
                }
                break;
            case MergeType.MultiplePage:
                images.Write(dest);
                break;
            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, "Un-support choice");
        }

        images.Dispose();
    }
}

public enum MergeType
{
    MultiplePage,
    Vertical,
    Horizontal,
    Montage
}
Run Code Online (Sandbox Code Playgroud)

运行代码

public static void Main(string[] args)
{
    var src = @"C:\temp\Images";
    var dest1 = @"C:\temp\Output\MultiplePage.tiff";
    var dest2 = @"C:\temp\Output\Vertical.tiff";
    var dest3 = @"C:\temp\Output\Horizontal.tiff";
    var dest4 = @"C:\temp\Output\Montage.tiff";

    MergeImage(src, dest1);
    MergeImage(src, dest2, MergeType.Vertical);
    MergeImage(src, dest3, MergeType.Horizontal);
    MergeImage(src, dest4, MergeType.Montage);
}
Run Code Online (Sandbox Code Playgroud)

这是C:\ temp \ Images中的4个输入文件:

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

运行代码后,我们在C:\ temp \ Output下得到4个新文件,如下所示:

在此处输入图片说明 4页多页Tiff

在此处输入图片说明 4图像垂直合并

在此处输入图片说明 4图像水平合并

在此处输入图片说明 4图像蒙太奇合并

最后说明:

  1. 可以使用System.Drawing将多个图像合并到tiff中;并使用System.Drawing.Imaging; 无需使用ImageMagick,但是pdf确实需要第三方转换库或工具,因此我将Ghostscript和ImageMagick用于C#。
  2. ImageMagick具有许多功能,因此您可以更改分辨率,输出文件的大小等。它是公认的库。

免责声明:此答案的一部分来自我的个人网站https://itbackyard.com/how-to-convert-ai-eps-pdf-ps-to-image-file/,源代码为github。