使用CLR在IronPython中创建缩略图图像。通过委托麻烦

时间:2016-09-01 07:13:07

标签: image clr ironpython

我正在尝试使用公共语言运行时使用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]

2 个答案:

答案 0 :(得分:1)

完美无缺。谢谢。

为了更好地理解,您是否能够解释ThumbnailImageAbort()函数的情况。

答案 1 :(得分:0)

要创建GetImageThumbailAbort的实例,您只需要objImageA.GetThumbnailImageAbort(ImageAbortDelegate)。当您尝试创建缩略图图像时,您必须传递IntPtr类型,而不仅仅是常规整数,因此您需要导入该类型。要执行此导入,您需要from System import IntPtr。当您最后创建缩略图时,您应该使用objThumbImageA = objImageA.GetThumbnailImage(intHeight, intWidth, objThumbAbort, IntPtr(0))