0

我们有使用 VB6 构建的遗留应用程序。这些应用程序使用领先工具。一切都很完美。我们有另一个 .NET 进程来优化图像(并做一些水印)并将其保存为 tiff 格式。这是.NET代码的一瞥,

        using (var bitmap = new Bitmap(contractWidth, contractHeight))
        {
            using (var canvas = Graphics.FromImage(bitmap))
            {
                 canvas.InterpolationMode = InterpolationMode.Default;
                // Play with canvas

                canvas.Save();
            }
            using (var stream = new MemoryStream())
            {
                bitmap.Save(stream, ImageFormat.Tiff);
                return stream.ToArray();
            }
        }

当我们以 tiff 格式保存它时(比如 image.tif)。但是当我们在我们的 VB6 项目中打开这个文件时,它会显示一个蓝屏。我试图比较正在工作的图像和不工作的图像。这里是屏幕,

在职的:

在职的

不工作:

在此处输入图像描述

更新:这解决了我的问题将 TIFF 转换为 1bit

4

1 回答 1

4

我知道您通过将输入图像转换为 1 位找到了问题的解决方案,但我想更详细地说明原始问题的原因,即 LEADTOOLS 首先没有正确打开 32 位文件。

您尚未指定您使用的是哪个版本的 LEADTOOLS,但由于它是旧版 VB6 应用程序,它可能是一个相当旧的版本(介于 v10 和 v17 之间;当前版本是 20)。

在任何情况下,即使是较旧版本的 SDK,打开 32 位 TIFF 文件也应该没有问题,但您的应用程序可能缺少以下一项或两项要求:

  1. 不同的 TIFF 文件子类型需要不同的 LEADTOOLS DLL。这在帮助主题Files to Included with Your Application 中进行了解释。

  2. 旧版本的 SDK 需要一个特殊的许可证来支持 LZW 压缩,早在 LZW 有一项有效专利的时代。如果您使用这些版本之一并且您的应用程序没有该许可证,它将不支持 LZW tiff 或 gif 文件。

请注意,即使是旧 SDK 版本的所有者也可以获得免费支持。因此,如果您是原始 SDK 的所有者,请随时将任何问题发送至 support@leadtools.com,并附上您的 LEADTOOLS 产品序列号。

于 2018-09-13T10:50:15.643 回答