SVG(可缩放矢量图形)是一种基于 XML 的矢量图像格式,用于定义具有动画支持的二维图形。由于像素密度高,这些图像主要用于网络。另一方面,与具有相同尺寸的PNG图像相比,丰富的特征也增强了SVG图像的大小。这种差异让开发人员考虑将图像从一种格式转换为另一种格式。本文讨论如何在 Java 中将 SVG 矢量转换为 PNG 图像。

在 Java 中将 SVG 转换为 PNG(灰度、旋转、翻转、明亮、水印)

用于转换图像的 Java API

GroupDocs.Conversion 展示了文档和 面向 Java 开发人员的图像转换 API。它支持从一种格式转换为另一种格式的大量图像格式。此外,还可以使用可用的高级选项自定义转换结果。我将使用这个 API,GroupDocs.Conversion for Java 将 SVG 矢量图形转换为 PNG 图像格式。

下载或配置

您可以从 下载部分 下载 JAR 文件,或者只获取基于 maven 的 Java 应用程序的 pox.xml 的存储库和依赖项配置。

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-conversion</artifactId>
        <version>22.3</version> 
</dependency>

在Java中将SVG转换为PNG图像

不浪费任何时间,让我们从默认配置的基本转换开始。以下步骤展示了如何在 Java 中将 SVG 矢量图形文件转换为 PNG 图像。

  • 使用 Converter 类加载 PNG 图形。
  • 准备图像转换选项。
  • 将转换文件类型设置为 PNG。
  • 调用 convert() 方法将加载的 SVG 文件转换为 PNG 图像。

以下 Java 源代码将 SVG 转换为 PNG 图像。

// 如何使用默认选项在 Java 中将 SVG 文件转换为 PNG 格式
Converter converter = new Converter("path/vector-graphics.svg");

ImageConvertOptions options = new ImageConvertOptions();
options.setFormat(ImageFileType.Png);

converter.convert("path/svg-to-png.png", options);

使用 Java 中的高级选项将 SVG 转换为 PNG 图像

许多自定义选项可以应用于 PNG 输出,同时从 SVG 转换以获得所需的结果。以下是 SVG 到 PNG 转换时可以调整的一些属性:

定制选项 方法
亮度 setBrightness(int value)
对比度 setContrast(int value)
翻转模式(水平/垂直) setFlipMode(ImageFlipModes value)
Gamma setGamma(float value)
灰度 setGrayscale(boolean value)
高度 setHeight(int value)
旋转角度 setRotateAngle(int value)
Watermark setWatermark(WatermarkTextOptions value)
宽度 setWidth(int value)

以下步骤展示了如何在 Java 中将 SVG 图形转换为 PNG 图像时应用变体。

  • 使用 Converter 类加载 SVG 图形。
  • 准备图像转换选项。
  • 将转换文件类型设置为 PNG。
  • 使用相应的 setter 方法设置其他相关属性并相应地调整它们的值。
  • 使用带有准备选项的 convert() 方法转换为 PNG 图像。

您可以应用这些效果中的任何一种或组合使用以获得所需的 PNG 输出。以下源代码在 Java 中将 SVG 转换为 PNG 时将自定义应用于 PNG 图像。

// 使用各种自定义将 SVG 文件转换为 Java 中的 PNG 格式
Converter converter = new Converter("path/vector-graphics.svg");

ImageConvertOptions options = new ImageConvertOptions();
options.setFormat(ImageFileType.Png); // Set output format as PNG

options.setFlipMode(ImageFlipModes.FlipY); // Flip Vertically or Horizontally
options.setBrightness(50);  // Set Brightness
options.setContrast(50);    // Set Contrast
options.setGamma(0.5F);     // Set Gamma
options.setGrayscale(true);	// Set Grayscale
options.setRotateAngle(45);	// Set Rotation

// 从 SVG 格式转换时向 PNG 添加水印
WatermarkTextOptions watermark = new WatermarkTextOptions("Watermark");
watermark.setColor(Color.BLUE);
watermark.setBackground(false);
watermark.setRotationAngle(-45);
watermark.setTop(50);
watermark.setLeft(50);
watermark.setTransparency(0.2);
watermark.setWidth(450);
watermark.setHeight(450);
options.setWatermark(watermark);

converter.convert("path/svg-to-png-customized.png", options);

获取免费 API 许可证

您可以获得免费的临时许可证 使用 API 而不受评估限制。

结论

总而言之,我们学会了在 Java 应用程序中将 SVG 文件转换为 PNG 格式。我们进一步了解了如何在从 SVG 格式转换时旋转、翻转或添加水印 PNG 文件。此外,我们还讨论了如何调整亮度、伽玛和灰度选项。

您可以尝试构建自己的图像转换 Java 应用程序。您可以从 documentation 中了解有关用于文档和图像转换自动化的 API 的更多信息。

最简单的方法是体验 GitHub 中的示例。如有任何疑问,请通过 论坛 联系我们。

也可以看看