wand-py 中是否有 -level 函数
Is there a -level function in wand-py
wand-py 中是否有 -level
功能来调整图像的级别?
我如何访问它?
-level
操作,或 MagickLevelImage C-API,目前在 wand-py 中不存在。然而,wand.api
使得添加对这种方法的支持变得非常容易。
扩展 wand.image.Image
class 的示例:
from ctypes import c_void_p, c_double, c_int
from wand.api import library
from wand.image import Image
# Define C-API method signatures
library.MagickLevelImage.argtypes = [c_void_p, # wand
c_double, # black_point
c_double, # gamma
c_double] # white_point
library.MagickLevelImage.restype = c_int
class MyImage(Image):
def level(self, black, white, gamma=1.0):
# Assert black, gamma, & white are float types
# between 0.0 & 1.0.
# Both black & white values must be converted to
# QuantumRange percentages.
quantum = float(self.quantum_range)
return library.MagickLevelImage(self.wand,
black * quantum,
gamma,
white * quantum)
if __name__ == '__main__':
# convert rose: -level 20%,50% rose_level.png
with MyImage(filename='rose:') as image:
image.level(0.2, 0.5)
image.save(filename='rose_level.png')
wand-py 中是否有 -level
功能来调整图像的级别?
我如何访问它?
-level
操作,或 MagickLevelImage C-API,目前在 wand-py 中不存在。然而,wand.api
使得添加对这种方法的支持变得非常容易。
扩展 wand.image.Image
class 的示例:
from ctypes import c_void_p, c_double, c_int
from wand.api import library
from wand.image import Image
# Define C-API method signatures
library.MagickLevelImage.argtypes = [c_void_p, # wand
c_double, # black_point
c_double, # gamma
c_double] # white_point
library.MagickLevelImage.restype = c_int
class MyImage(Image):
def level(self, black, white, gamma=1.0):
# Assert black, gamma, & white are float types
# between 0.0 & 1.0.
# Both black & white values must be converted to
# QuantumRange percentages.
quantum = float(self.quantum_range)
return library.MagickLevelImage(self.wand,
black * quantum,
gamma,
white * quantum)
if __name__ == '__main__':
# convert rose: -level 20%,50% rose_level.png
with MyImage(filename='rose:') as image:
image.level(0.2, 0.5)
image.save(filename='rose_level.png')