如何使用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
相关产品推荐
相关产品推荐

