我正在尝试使用公共语言运行时使用IronPython创建缩略图。
来自Visual Basic背景我正在努力将委托功能从IronPython中传递给CLR。
以下是我的编码:
import os
import clr
# contains Image definition
clr.AddReference('System.Drawing')
from System.Drawing import Image
# contains Action and Func for delegation
clr.AddReference('System.Core')
from System import Func
# open image filename
objImageA = Image.FromFile('a.jpg')
# delegated function
def ImageAbortDelegate():
return False
objThumbImageAbort = Func[objImageA.GetThumbnailAbort](ImageAbortDelegate)
# for this example reduce image by 10 percent
intHeight = objImageA.Height / 10
intWidth = objImageA.Width / 10
# why is this failing?
objThumbImageA = objImageA.GetThumbnailImage(intHeight, intWidth, objThumbAbort, 0)
# gives error message TypeError: expected GetThumbnailImageAbort, got Func[GetThumbnailImageAbort]
答案 0 :(得分:1)
完美无缺。谢谢。
为了更好地理解,您是否能够解释ThumbnailImageAbort()函数的情况。
答案 1 :(得分:0)
要创建GetImageThumbailAbort
的实例,您只需要objImageA.GetThumbnailImageAbort(ImageAbortDelegate)
。当您尝试创建缩略图图像时,您必须传递IntPtr
类型,而不仅仅是常规整数,因此您需要导入该类型。要执行此导入,您需要from System import IntPtr
。当您最后创建缩略图时,您应该使用objThumbImageA = objImageA.GetThumbnailImage(intHeight, intWidth, objThumbAbort, IntPtr(0))
。