You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PythonMagick获取图像分辨率单位?解决类型转换异常

如何用PythonMagick获取图像的分辨率单位?

运行以下代码时:

import subprocess
import PythonMagick
subprocess.run(["convert","rose:","test.pnm"])
print(PythonMagick.Image("test.pnm").resolutionUnits())

会抛出异常:

TypeError: No to_python (by-value) converter found for C++ type: MagickCore::ResolutionType

这是因为resolutionUnits()返回的是C++层的枚举类型MagickCore::ResolutionType,Python无法直接将其转换为原生类型,可通过以下两种方法解决:

方法一:转换枚举值为整数后映射单位

将枚举值转为整数,再通过预设的映射表获取对应的分辨率单位名称:

import subprocess
import PythonMagick

subprocess.run(["convert","rose:","test.pnm"])
img = PythonMagick.Image("test.pnm")
unit_code = int(img.resolutionUnits())
unit_map = {
    0: "Undefined",
    1: "PixelsPerInch",
    2: "PixelsPerCentimeter"
}
print(unit_map.get(unit_code, "Unknown"))

方法二:直接读取图像属性字符串

通过attribute()方法读取图像的units属性,直接获取字符串形式的分辨率单位:

import subprocess
import PythonMagick

subprocess.run(["convert","rose:","test.pnm"])
img = PythonMagick.Image("test.pnm")
print(img.attribute("units"))

内容的提问来源于stack exchange,提问作者DobbyTheElf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:22:07