在 Python 中将 SVG 转换为 JPG

Quick Answer: 要在 Python 中将 SVG 转换为 JPG,请用 SVGDocument 加载源文件,创建 ImageSaveOptions,设置 options.format = ImageFormat.JPEG,然后调用 Converter.convert_svg(document, options, output_path)。由于 JPG 不支持透明度,请设置背景颜色。

以编程方式将 SVG 转换为 JPG

当需要紧凑的栅格预览、缩略图、报表图像或 Web 资源,并且不需要透明度时,JPG 很有用。如果 SVG 包含透明区域,请在转换前选择明确的背景颜色,否则最终背景可能取决于渲染器或查看工作流。

运行示例前,请在 Python 环境中 安装 Aspose.SVG for Python via .NET

使用默认设置将 SVG 转换为 JPG

下面的示例加载 document.svg,选择 JPEG 输出,并将结果保存为 document.jpg

 1from aspose.svg import SVGDocument
 2from aspose.svg.converters import Converter
 3from aspose.svg.rendering.image import ImageFormat
 4from aspose.svg.saving import ImageSaveOptions
 5
 6# Convert an SVG file to JPG
 7options = ImageSaveOptions()
 8options.format = ImageFormat.JPEG
 9
10with SVGDocument("document.svg") as document:
11    Converter.convert_svg(document, options, "document.jpg")

该示例使用 SVGDocument 加载源文件,用带 ImageFormat.JPEGImageSaveOptions 选择 JPG 输出,并用 Converter.convert_svg() 写入转换后的文件。

使用自定义选项将 SVG 转换为 JPG

当 JPG 需要特定画布、背景或分辨率时使用 ImageSaveOptions。下面的示例设置浅色背景,创建带边距的 350 x 350 页面,并以 96 dpi 渲染。

 1import os
 2from aspose.svg import SVGDocument
 3from aspose.svg.converters import Converter
 4from aspose.svg.drawing import Margin, Page, Resolution, Size
 5from aspose.svg.rendering.image import ImageFormat
 6from aspose.svg.saving import ImageSaveOptions
 7from aspose.pydrawing import Color
 8
 9# Convert SVG to JPG with custom background, page size, and resolution
10input_folder = "data/"
11output_folder = "output/"
12input_path = os.path.join(input_folder, "flower.svg")
13output_path = os.path.join(output_folder, "flower.jpg")
14os.makedirs(output_folder, exist_ok=True)
15
16options = ImageSaveOptions()
17options.format = ImageFormat.JPEG
18options.background_color = Color.from_argb(240, 240, 240)
19options.page_setup.any_page = Page(Size(350, 350), Margin(10, 10, 10, 10))
20options.horizontal_resolution = Resolution.from_dots_per_inch(96.0)
21options.vertical_resolution = Resolution.from_dots_per_inch(96.0)
22
23with SVGDocument(input_path) as document:
24    Converter.convert_svg(document, options, output_path)

下图显示源 SVG 图像 (a) 和带自定义背景色的 JPG 转换结果 (b)。

原始 SVG 图像和使用自定义背景转换后的 JPG 图像

重要的 ImageSaveOptions 属性

属性使用场景
format使用 ImageFormat.JPEG 选择 JPEG 输出
background_color保存为 JPG 前填充透明 SVG 区域
page_setup设置页面尺寸、边距和画布布局
horizontal_resolution设置水平输出分辨率,单位为 dpi
vertical_resolution设置垂直输出分辨率,单位为 dpi
smoothing_mode控制形状和边缘的栅格化质量

常见错误和修复

问题可能原因修复方法
JPG 输出有黑色或意外背景源 SVG 有透明区域,但 JPG 不能存储透明度转换前设置 options.background_color
图像为空或被裁剪SVG 没有可用 viewport,或输出页面小于可见内容定义 SVG 的 widthheightviewBox,或配置 options.page_setup.any_page
链接图像、CSS 或字体缺失无法从当前输入路径解析相对资源从原始文件路径加载 SVG,并将链接资源保留在预期的相对位置
文件扩展名和实际格式不匹配未将 options.format 设为 ImageFormat.JPEG,或输出路径扩展名错误设置 options.format = ImageFormat.JPEG,并保存为 .jpg.jpeg
线条、图标或文本有锯齿输出尺寸或栅格分辨率低于目标显示尺寸提高页面尺寸或分辨率,并在质量敏感输出中检查 smoothing_mode

在线 SVG 转 JPG 转换器

使用免费的在线 SVG to JPG Converter 在 Python 中实现相同工作流前测试输出。

                
            

在线 SVG 转 JPG 转换器

FAQ

如何在 Python 中将 SVG 转换为 JPG?

使用 SVGDocument 加载 SVG,将 ImageSaveOptions.format 设置为 ImageFormat.JPEG,然后调用 Converter.convert_svg(document, options, output_path)

SVG 转换应该使用 JPG 还是 PNG?

不需要透明度且需要紧凑预览、缩略图或 Web 图像时使用 JPG。需要无损栅格输出或透明区域时使用 PNG。

转换后的 JPG 仍然是可编辑矢量图吗?

不是。JPG 是栅格图像格式。转换后输出包含像素,而不是可编辑的 SVG 元素、路径或文本节点。

可以保存为 .jpeg 而不是 .jpg 吗?

可以。使用 ImageFormat.JPEG,并根据工作流命名约定在输出文件名中选择 .jpg.jpeg

可以从 URL 或内存字符串将 SVG 转换为 JPG 吗?

可以。从 URL、文件流或带有效 base URI 的 SVG 标记字符串创建 SVGDocument,然后将文档与 JPEG 图像选项一起传给 Converter.convert_svg()

可以将许多 SVG 文件转换为 JPG 吗?

可以。遍历输入文件夹,复用同一个 ImageSaveOptions,并为每个 SVG 文件调用 Converter.convert_svg()。参见 批量转换 SVG 文件

相关文章