用于加载和保存 JPEG2000 和 DjVu 的 C#.NET Java 库

在对数字数据执行任何计算或处理时,内存优化是一个需要考虑的重要因素。应用不同的优化策略来最小化内存利用率和处理延迟。这就是我们为 .NET 和 Java 19.12 在 Aspose.Imaging 中加载和创建 JPEG 2000 (JP2) 和 DjVu 图像的内存优化功能的原因.

JPEG 2000 图像的内存优化

Aspose.Imaging for .NET 和 Java API 支持使用 JPEG 2000 图像。您可以加载现有的 JPEG 2000 图像以及创建和保存 JPEG 2000 图像,并在 C# 或 Java 中指定不同的 Jpeg2000 编解码器选项。为了在加载和保存 JPEG 2000 图像时优化内存消耗,您可以定义内存优化策略并限制要使用的内存缓冲区大小。

让我们看看在加载和创建 JPEG 2000 图像时如何指定内存缓冲区大小。

加载 JPEG 2000 图像

您可以在加载 JPEG 2000 图像时使用 LoadOptions 类中的 BufferSizeHint 属性指定内存缓冲区大小,如以下 C# 和 Java 代码示例所示。

C#

// 为目标加载的图像设置 10 兆字节的内存限制
// JP2 编解码器
using (Image image = Image.Load("inputFile.jp2", new LoadOptions() { BufferSizeHint = 10 })) {
   image.Save("outputFile.jp2");
}

// J2K 编解码器
using (Image image = Image.Load("inputFile.j2k", new LoadOptions() { BufferSizeHint = 10 })) {
   image.Save("outputFile.j2k");
}

爪哇

// 为目标加载的图像设置 10 兆字节的内存限制
// JP2 编解码器
try (Image image = Image.load("inputFile.jp2", new LoadOptions() {{ setBufferSizeHint(10); }}))
{
    image.save("outputFile.jp2");
}

// J2K 编解码器
try (Image image = Image.load("inputFile.j2k", new LoadOptions() {{ setBufferSizeHint(10); }}))
{
    image.save("outputFile.j2k");
}

创建或保存 JPEG 2000 图像

与加载 JPEG 2000 图像类似,您可以在创建或保存图像时使用 Jpeg2000Options 类中的 BufferSizeHint 属性指定内存缓冲区大小。

C#

// 为目标创建的图像设置 10 兆字节的内存限制
// JP2 编解码器
ImageOptionsBase createOptions = new Jpeg2000Options { Codec = Jpeg2000Codec.Jp2 };
createOptions.BufferSizeHint = 10;
createOptions.Source = new FileCreateSource("createdFile.jp2", false);
using (var image = Image.Create(createOptions, 1000, 1000)) {
   image.Save(); // save to same location
}

// J2K 编解码器
ImageOptionsBase createOptions = new Jpeg2000Options { Codec = Jpeg2000Codec.J2K };
createOptions.BufferSizeHint = 10;
createOptions.Source = new FileCreateSource("createdFile.j2k", false);
using (var image = Image.Create(createOptions, 1000, 1000)) {
   image.Save(); // save to same location
}

爪哇

// 为目标创建的图像设置 10 兆字节的内存限制
// JP2 编解码器
try(Jpeg2000Options createOptions = new Jpeg2000Options())
{
    createOptions.setCodec(Jpeg2000Codec.Jp2);
    createOptions.setBufferSizeHint(10);
    createOptions.setSource(new FileCreateSource("createdFile.jp2", false));
    try (Image image = Image.create(createOptions, 1000, 1000))
    {
        image.save(); // save to same location
    }
}

// J2K 编解码器
try(Jpeg2000Options createOptions = new Jpeg2000Options())
{
    createOptions.setCodec(Jpeg2000Codec.J2K);
    createOptions.setBufferSizeHint(10);
    createOptions.setSource(new FileCreateSource("createdFile.j2k", false));
    try (Image image = Image.create(createOptions, 1000, 1000))
    {
        image.save(); // save to same location
    }
}

DjVu 图像的内存优化

Aspose.Imaging for .NET 和 Java API 也支持使用 DjVu 图像。您可以加载 DjVu 图像并将 DjVu 转换为光栅图像格式,例如 TIFF、PNG 等。与 JEPG 2000 图像类似,您可以在加载 DjVu 图像时优化内存利用率,如以下 C# 和 Java 代码示例所示.

C#

// 为目标加载的图像设置 50 兆字节的内存限制
using (DjvuImage image = (DjvuImage)Image.Load("test.djvu", new LoadOptions { BufferSizeHint = 50 }))
{
   for (int pageNum = 0; pageNum < image.Pages.Length; pageNum++) {
    image.Pages[pageNum].Save("page" + pageNum + ".png", new PngOptions());
  }
}

爪哇

// 为目标加载的图像设置 50 兆字节的内存限制
try (DjvuImage image = (DjvuImage)Image.load("test.djvu", new LoadOptions() {{ setBufferSizeHint(50); }}))
{
    int pageNum = 0;
   for (DjvuPage page : image.getPages())
    {
        page.save("page" + pageNum + ".png", new PngOptions());
        pageNum++;
    }
}

好吧,您已经了解了如何在使用 Aspose.Imaging 加载或创建 JP2 或 DjVu 图像时限制内存缓冲区大小。因此,如果您使用 JPEG 2000 和 DjVu 图像并希望优化内存消耗,我们建议您在 .NET 或 Java 应用程序中下载并使用 Aspose.Imaging 19.12。

与往常一样,如果您有任何问题或疑问,请通过我们的 论坛 告诉我们。