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个tiff?例如,假设有pdf,jpeg,png,而我想在其中创建1个tiff?
- 在此答案中,我使用https://imagemagick.org/index.php的 .net实现进行图像处理,使用Ghostscript来帮助读取AI / EPS / PDF / PS文件,因此我们可以将其转换为可信且可靠的图像文件官方消息。
- 在我回答了这个问题之后,我的电子邮件中又问了一些其他合并选项的问题,因此我扩大了回答范围。
IMO有两个实现目标的步骤:
仅当您打算转换AI / EPS / PDF / PS文件格式时,才需要执行步骤1。否则,请跳至步骤2。
为了使pdf转换为任何图像格式成为可能,我们需要一个可以读取pdf文件的库,并且需要一个将其转换为图像类型的工具。为此,我们将需要安装Ghostscript(GNU Affero通用公共许可证)。
之后,我们需要在Visual Studio中的nuget link中为.net 安装ImageMagick.net。
到目前为止,一切都很好。
第二个也是最后一步就是我们需要读取的文件夹位置的文件(PNG,JPG,BMP,PDF等),并添加每个文件MagickImageCollection
,然后我们有几个选项合并使用AppendHorizontally
,AppendVertically
,Montage
或者多页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个新文件,如下所示:
最后说明:
- 可以使用System.Drawing将多个图像合并到tiff中;并使用System.Drawing.Imaging; 无需使用ImageMagick,但是pdf确实需要第三方转换库或工具,因此我将Ghostscript和ImageMagick用于C#。
- ImageMagick具有许多功能,因此您可以更改分辨率,输出文件的大小等。它是公认的库。
免责声明:此答案的一部分来自我的个人网站https://itbackyard.com/how-to-convert-ai-eps-pdf-ps-to-image-file/,源代码为github。
归档时间: |
|
查看次数: |
32145 次 |
最近记录: |