使用 Python 进行 DIB 到 CANVAS 图像转换
创建 Python 应用程序以通过服务器 API 将 DIB 转换为 CANVAS 图像和照片
如何使用 Python 将 DIB 转换为 CANVAS 图像和照片
图像文件从一种格式转换为另一种格式是每个图形设计师遇到的常见任务。文件转换的效率和卓越性不仅影响完成速度,而且对评估整体工作质量也起着至关重要的作用。关于图像源,它们经常需要转换为更适合打印或在线分发的替代格式。在图形编辑器中制作的图像可能是矢量格式。在这种情况下,为了网站发布,必须对其进行光栅化并以光栅格式保存。您可以选择将图像转换为未压缩格式以获得卓越的质量,或将其保存为无损压缩格式以最小化文件大小。对于必须减小文件大小的情况(例如在网站应用程序中),可以转换为有损压缩格式。专门的图像数据压缩算法可以显着减小文件大小,同时保持可接受的图像质量,确保快速图像加载。要将图像和照片从 DIB 转换为 CANVAS,我们将使用 Aspose.Imaging for Python via .NET API 是一个功能丰富、功能强大且易于使用的图像处理和转换 API,适用于 Python 平台。您可以使用系统命令中的以下命令安装它。
系统命令行
>> pip install aspose-imaging-python-net
通过 Python 将 DIB 转换为 CANVAS 的步骤
开发人员只需几行代码即可轻松加载 DIB 文件并将其转换为 CANVAS。
- 使用 Image.Load 方法加载 DIB 文件
- 创建和设置 ImageOptionsBase 所需子类的实例(例如 BmpOptions、PngOptions 等)
- 调用 Image.Save 方法
- 传递带有 CANVAS 扩展名的文件路径和 ImageOptionsBase 类的对象
系统要求
在运行转换示例代码之前,请确保您具有以下先决条件。
- 操作系统:Windows 或Linux。
- 开发环境:支持.NET Core 7及更高版本,例如Microsoft Visual Studio。
将 DIB 转换为 CANVAS - Python
from aspose.imaging import * | |
from aspose.imaging.fileformats.tiff.enums import * | |
from aspose.imaging.fileformats.jpeg2000 import * | |
from aspose.imaging.fileformats.png import * | |
from aspose.imaging.imageoptions import * | |
from aspose.pycore import is_assignable | |
import os | |
if 'TEMPLATE_DIR' in os.environ: | |
templates_folder = os.environ['TEMPLATE_DIR'] | |
else: | |
templates_folder = r"C:\Users\USER\Downloads\templates" | |
delete_output = 'SAVE_OUTPUT' not in os.environ | |
data_dir = templates_folder | |
def process_convertion(): | |
import_formats, export_formats = get_available_image_formats() | |
for import_key, import_value in import_formats.items(): | |
format_ext = import_key | |
input_file = os.path.join(templates_folder, f"template.{format_ext}") | |
if not os.path.exists(input_file): | |
continue | |
for export_key, export_value in export_formats.items(): | |
output_file = os.path.join(templates_folder, f"convert-{format_ext}-to-{export_key}.{export_key}") | |
print("Processing conversion:" + output_file) | |
with Image.load(input_file) as image: | |
export_options = export_value.clone() | |
if is_assignable(image, VectorImage): | |
rasterization_options = import_value | |
rasterization_options.page_width = float(image.width) | |
rasterization_options.page_height = float(image.height) | |
export_options.vector_rasterization_options = rasterization_options | |
image.save(output_file, export_options) | |
if delete_output: | |
os.remove(output_file) | |
def get_available_image_formats(): | |
obj_init = Jpeg2000Options() | |
obj_init.codec = Jpeg2000Codec.J2K | |
obj_init2 = Jpeg2000Options() | |
obj_init2.codec = Jpeg2000Codec.JP2 | |
obj_init3 = PngOptions() | |
obj_init3.color_type = PngColorType.TRUECOLOR_WITH_ALPHA | |
obj_init4 = {} | |
obj_init4["bmp"] = BmpOptions() | |
obj_init4["gif"] = GifOptions() | |
obj_init4["dicom"] = DicomOptions() | |
obj_init4["jpg"] = JpegOptions() | |
obj_init4["jpeg"] = JpegOptions() | |
obj_init4["jpeg2000"] = Jpeg2000Options() | |
obj_init4["j2k"] = obj_init | |
obj_init4["jp2"] = obj_init2 | |
obj_init4["png"] = obj_init3 | |
obj_init4["apng"] = ApngOptions() | |
obj_init4["tiff"] = TiffOptions(TiffExpectedFormat.DEFAULT) | |
obj_init4["tif"] = TiffOptions(TiffExpectedFormat.DEFAULT) | |
obj_init4["tga"] = TgaOptions() | |
obj_init4["webp"] = WebPOptions() | |
obj_init4["ico"] = IcoOptions(FileFormat.PNG, 24) | |
raster_formats_that_support_export_and_import = obj_init4 | |
obj_init5 = EmfOptions() | |
obj_init5.compress = True | |
obj_init6 = WmfOptions() | |
obj_init6.compress = True | |
obj_init7 = SvgOptions() | |
obj_init7.compress = True | |
obj_init8 = {} | |
obj_init8["emf"] = (EmfOptions(), EmfRasterizationOptions()) | |
obj_init8["svg"] = (SvgOptions(), SvgRasterizationOptions()) | |
obj_init8["wmf"] = (WmfOptions(), WmfRasterizationOptions()) | |
obj_init8["emz"] = (obj_init5, EmfRasterizationOptions()) | |
obj_init8["wmz"] = (obj_init6, WmfRasterizationOptions()) | |
obj_init8["svgz"] = (obj_init7, SvgRasterizationOptions()) | |
vector_formats_that_support_export_and_import = obj_init8 | |
obj_init9 = DxfOptions() | |
obj_init9.text_as_lines = True | |
obj_init9.convert_text_beziers = True | |
obj_init10 = {} | |
obj_init10["psd"] = PsdOptions() | |
obj_init10["dxf"] = obj_init9 | |
obj_init10["pdf"] = PdfOptions() | |
obj_init10["html"] = Html5CanvasOptions() | |
formats_only_for_export = obj_init10 | |
obj_init11 = {} | |
obj_init11["djvu"] = None | |
obj_init11["dng"] = None | |
obj_init11["dib"] = None | |
formats_only_for_import = obj_init11 | |
obj_init12 = {} | |
obj_init12["eps"] = EpsRasterizationOptions() | |
obj_init12["cdr"] = CdrRasterizationOptions() | |
obj_init12["cmx"] = CmxRasterizationOptions() | |
obj_init12["otg"] = OtgRasterizationOptions() | |
obj_init12["odg"] = OdgRasterizationOptions() | |
vector_formats_only_for_import = obj_init12 | |
# Get total set of formats to what we can export images | |
export_formats = {k: v[0] for k, v in vector_formats_that_support_export_and_import.items()} | |
export_formats.update(formats_only_for_export) | |
export_formats.update(raster_formats_that_support_export_and_import) | |
# Get total set of formats that can be loaded | |
import_formats = {k : VectorRasterizationOptions() for k in formats_only_for_import} | |
import_formats.update(vector_formats_only_for_import) | |
import_formats.update({k : v[1] for k, v in vector_formats_that_support_export_and_import.items()}) | |
return import_formats, export_formats | |
# run | |
process_convertion() |
DIB 什么是 DIB 文件格式
DIB(设备独立位图)文件是一种光栅图像文件,其结构类似于标准位图文件 (BMP),但具有不同的标题。几乎所有可以在 Windows 和 macOS 上打开标准 BMP 文件的应用程序都可以打开它。 DIB 是二进制文件,具有类似于 BMP 的复杂文件格式。
阅读更多 | DIBCANVAS 什么是 CANVAS 文件格式
HTML(超文本标记语言)是为在浏览器中显示而创建的网页的扩展。 HTML被称为网络语言,随着新信息要求的要求而发展,要求将其显示为网页的一部分。最新的变体被称为 HTML 5,它为使用该语言提供了很大的灵活性。 HTML 页面要么从托管这些页面的服务器接收,要么也可以从本地系统加载。每个 HTML 页面都由 HTML 元素组成,例如表单、文本、图像、动画、链接等。这些元素由诸如 img、a、p 和其他几个标签表示,其中每个标签都有开始和结束。它还可以嵌入以 JavaScript 和样式表 (CSS) 等脚本语言编写的应用程序,以实现整体布局表示。
阅读更多 | CANVAS其他支持的转换
使用 Python,可以轻松转换不同的格式,包括。