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.


Log in to reply