getting resolution of bitmap

On 20/11/2013 at 06:35, xxxxxxxx wrote:

I'm creating a new material and importing an external .png file into it.  I have all of that working well but I would like to get the DPI of the image that was imported.  I don't see anything for c4d.BaseBitmap that allows me to get that info.  I see that MultipassBitmap allows you to get the DPI but I'm having trouble getting that to work.  Any help or direction is appreciated.

I pulled these lines out of the script that deal with this part.

bmp = c4d.bitmaps.BaseBitmap()
if bmp.InitWith(pathToPNGfile)[0] != c4d.IMAGERESULT_OK:
        gui.MessageDialog("Please choose a valid image format.")
        return

width, height = bmp.GetSize() #this gives me the dimensions of my .png file but I need to know DPI as well

mbp = c4d.bitmaps.MultipassBitmap.AllocWrapper(bmp)
    
print mbp.GetParameter(8)  #I thought this would return the DPI but instead it prints 'None'

On 20/11/2013 at 07:00, xxxxxxxx wrote:

Hi .del,

how do you come to the conclusion that mbp.GetParameter(8) returns the DPI? The documentation
states that c4d.MPBTYPE_DPI is the parameter ID associated with the DPI.

import c4d
from c4d import gui
  
def main() :
    path = c4d.storage.LoadDialog()
    if not path: return
    bmp = c4d.bitmaps.BaseBitmap()
    if bmp.InitWith(path)[0] != c4d.IMAGERESULT_OK:
            gui.MessageDialog("Please choose a valid image format.")
            return
  
    mbp = c4d.bitmaps.MultipassBitmap.AllocWrapper(bmp)
    print mbp.GetParameter( **c4d.MPBTYPE_DPI** ) 
  
main()

PS: Please use the BB code tags for posting your code or give it a monospaced font. It will also
make it easier for others if you including a full example script, if possible. (including imports etc.
as I did).

Best,
-Niklas

On 20/11/2013 at 07:28, xxxxxxxx wrote:

Originally posted by xxxxxxxx

Hi .del,

how do you come to the conclusion that mbp.GetParameter(8) returns the DPI? The documentation
states that c4d.MPBTYPE_DPI is the parameter ID associated with the DPI.

AAARRGGGGHHHH!!  I had tried MPBTYPE_DPI but it didn't work.  I blew putting the c4d. in front of it. The documentation said the Parameter is an int  so when my first attempt didn't work I counted down the list and came up with 8.  What can I say, I'm totally new at this and giving it a shot before coming on here.

I appreciate the clarification and the tip on using the code tag.

On 21/11/2013 at 06:03, xxxxxxxx wrote:

The script is working but it always returns 72 regardless of the files actual dpi.

On 26/11/2013 at 06:22, xxxxxxxx wrote:

I can confirm. I'll find out how to read the DPI.

On 05/12/2013 at 08:16, xxxxxxxx wrote:

Reading the DPI when loading an image is not supported with the current state of the API.

Best,
-Niklas

On 06/12/2013 at 09:33, xxxxxxxx wrote:

Does the state of the API ever change?

Is this an option in another language?  I'm starting to feel like Python in C4D on a Mac isn't quite there yet.  I'm working on a relatively short script have already come across two functions in the sdk that don't work.  Should I be looking at coffee instead or make the move to C++?

Thanks for your help.