Ghostscript.NET 和转换文件尺寸的问题

问题描述 投票:0回答:1

我正在尝试处理 Ghostscript.NET 1.2.0.0 插件,以使用使用 C# 和 Windows 窗体编写的程序将 .eps 文件转换为 .bmp。

https://www.nuget.org/packages/Ghostscript.NET/1.2.0

我的结果很差,我无法真正找出问题的原因。 这是我的代码的一部分:

void ButtonConvertClick(object sender, EventArgs e)
    {
        string inputFilePath = @"C:\Users\Karlsson\Documents\SharpDevelop Projects\Converter\Converter\bin\calibration.eps";
        string outputFilePath = @"C:\Users\Karlsson\Documents\SharpDevelop Projects\Converter\Converter\bin\calibration_csharp.bmp";

        using (var rasterizer = new GhostscriptRasterizer())
            {
    
                rasterizer.Open(inputFilePath);

                var image = rasterizer.GetPage(72,72,0);

                var bmp = new Bitmap(image);

                bmp.Save(outputFilePath, System.Drawing.Imaging.ImageFormat.Bmp);

                pictureBox.Image = bmp;

                rasterizer.Close();
                
            }
           
    }

测试文件是calibration.txt文件,这是泰克示波器记录的图像。

校准.txt

为了使转换成为可能,我将此文件的扩展名从 .txt 更改为 .eps。

在谈论我的 C# 代码完成转换的结果之前,我将展示它是如何通过 Convert.io 在线转换器实现的 https://convertio.co/eps-bmp/

(这里我手动将照片改为.jpg以节省尺寸)

用我的 C# 代码转换的 .eps 看起来完全不同 - 实际的水平图像占据了垂直方向的白纸的一小部分区域。

(这里我还手动将照片改为.jpg以节省尺寸)

rasterizer.GetPage仅对图像进行缩放,而绘图的大小与周围背景的比例是相同的。我无法像 Convert.io 的结果图像那样调整大小。当然,我意识到这个在线转换器要先进得多,但是,它以某种方式处理这个 .eps 文件。

我决定查看一些其他示例 .eps 文件并找到此页面:

https://people.sc.fsu.edu/~jburkardt/data/eps/eps.html

所以我拿了一些示例 .eps 文件,这是我用其中一个文件实现的效果(我选择了 mathematica.eps,一个简单的图表):

当然,我在代码中用mathematica.eps替换了calibration.eps。

突然发现,我使用 Ghostscript 的 C# 代码可以处理图像,其分辨率和整体尺寸与作为页面上的图案放置的示例的尺寸相同

事实证明,第二个 .eps 文件的构建方式有点不同,它可能对转换方法有一些影响。但是,您能找到解释为什么我的代码在 Calibration.eps 文件(向图像添加白色背景)时失败,而它完美地处理了第二个图像吗?我对 PostScript 不太了解。

c# file bitmap ghostscript eps
1个回答
0
投票

这是 Ghostscript.NET 库中的一个错误。

现已修补(https://github.com/ArtifexSoftware/Ghostscript.NET/commit/814b25eb50770ee4649600911f4bbb8a5638281c

新库尚未正式发布,但您可以获取最新的源代码并自行编译。

© www.soinside.com 2019 - 2024. All rights reserved.