I'm trying to execute this bit of code I found in one of the devkit
examples. (customImagePlane.py)

image = OpenMaya.MImage()
image.readFromFile(filenameStr)

scriptUtil = OpenMaya.MScriptUtil()
widthPtr = scriptUtil.asUintPtr()
heightPtr = scriptUtil.asUintPtr()
scriptUtil.setUint( widthPtr, 0 )
scriptUtil.setUint( heightPtr, 0 )
image.getSize( widthPtr, heightPtr )

pWidth = scriptUtil.getUint(widthPtr)
pHeight = scriptUtil.getUint(heightPtr)

print 'readBandedImageNode: ', pWidth, pHeight


size = pWidth * pHeight
# Implement transparency
charPixelPtr = image.pixels()
for i in range( 0, size, 4 ):
        alphaIndex = (i*4)+3
        alpha = OpenMayaScript.getCharArrayItem(charPixelPtr,alphaIndex)
        OpenMayaScript.setCharArray( alpha * (1.0 - self.fTransparency),
alphaIndex )


First off, what is OpenMayaScript? It doesn't declare it or import it
anywhere, so I'm assuming they meant MScriptUtil() as those are
functions of it being used.

Secondly, this isn't working =P. I'm getting this error:

# TypeError: argument number 1: a 'char *' is expected, 'PySwigObject
(_p_unsigned_char)' is received #

I'm really not having much luck learning the python api as it seems
all these expected types that C++ requires are getting lost in
pythonese. image.pixels() is supposed to return a constant unsigned
char... so why is piping that into that variable above breaking it?

This is sample code so it should work? What is a PySwigObject?

I've also tried using image.floatPixels from the MImage class and it
returns None every time.

I'm trying to get pixel value information at given coordinates. I
found another C++ example of what I want to do but I'm a little lost
on the c++ to python syntax change.

C++ exmaple:
const unsigned char* pix = image.pixels() + (w*py*4 + 4*px);

Can anyone tell me what I'm doing wrong, or is this another bug?


--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/python_inside_maya
-~----------~----~----~----~------~----~------~--~---

Reply via email to