Search code examples
pythonimagepluginsmaya

MImage_getSize in maya python


I'm new to Maya plugin development and currently I'm trying to interface with the 'MImage' class/function in the OpenMaya library. I'm trying to get the dimensions of an image using 'getSize'. I can't find informative documentation and the function is not behaving as I'd expect it to. Were it 'pythonic', I'd expect it to return a tuple (x,y) but instead it seems to want integers, passed by reference and I'm not sure how to do this in python.

img = om.MImage()
img.readFromFile(currentFile)
dir(img)
w = int(0)
h = int(0)
img.getSize(w, h)

I've tried this but I get very c like error:

'MImage_getSize', argument 2 of type 'unsigned int &'

Suggesting that perhaps this was an automatically generated interface rather than something hand coded with python in mind? I'm not sure how to use it, in any case.


Solution

  • I would suggest using Maya Python API 2.0 since it's more Pythonic.

    MImage.getSize(), for example, directly returns the image's width and height - see doc page:

    OpenMaya.MImage.getSize()
      getSize() -> [width, height]
    
    Get the width and height of the currently opened image.
    

    This should work (note the import line):

    import maya.api.OpenMaya as om
    
    img = om.MImage()
    img.readFromFile('/tmp/texture.png')
    print(img.getSize())
    

    Output:

    [512L, 512L]