Extracting a thumbnail of C4d file. [SOLVED]



  • On 27/11/2014 at 03:23, xxxxxxxx wrote:

    Hi all,

    I am trying to extract the thumbnail of a C4d file. I don't want to use rendering as it is time consuming. Do we  have any other option of saving a frame in png, tif or jpeg format. Any other method which can help me here would be fine too.

    Thanks

    Nishant



  • On 27/11/2014 at 04:11, xxxxxxxx wrote:

    Hello Nishant,

    you might try this one:
    Just a test doc with a cube...
    As it uses the hardware render, it is not that time consuming:

      
    import c4d  
    import os  
    from c4d import bitmaps, documents, storage  
      
    def WriteBitmap(bmp, format=c4d.FILTER_JPG,settings=c4d.BaseContainer()) :  
      mfs = storage.MemoryFileStruct()  
      mfs.SetMemoryWriteMode()  
      hf = storage.HyperFile()  
      if hf.Open(0, mfs, c4d.FILEOPEN_WRITE, c4d.FILEDIALOG_NONE) :  
          if not hf.WriteImage(bmp,format,settings) :  
                
              return None  
          hf.Close()  
      return mfs  
      
    def main() :  
      
      doc = c4d.documents.GetActiveDocument()  
      doc.InsertObject(c4d.BaseObject(c4d.Ocube))   
        
      
      flags = c4d.DRAWFLAGS_FORCEFULLREDRAW  
      c4d.DrawViews(flags)   
        
        
      rd = doc.GetActiveRenderData().GetData()  
      xres = int(rd[c4d.RDATA_XRES])  
      yres = int(rd[c4d.RDATA_YRES])  
      bmp = bitmaps.BaseBitmap()  
      bmp.Init(x=xres, y=yres, depth=24)  
      
      rd[c4d.RDATA_RENDERENGINE] = c4d.RDATA_RENDERENGINE_PREVIEWHARDWARE   
      res = documents.RenderDocument(doc, rd, bmp, c4d.RENDERFLAGS_EXTERNAL)  
      
      mfs = WriteBitmap(bmp)  
      
      if res==c4d.RENDERRESULT_OK:  
          previewBmp = doc.GetDocPreviewBitmap()  
          if not previewBmp.InitWith(mfs) :  
              raise StandardError, "Not working"  
      
      path = "/Users/monkeytack/Desktop/projekt_x/2014-11-05_projekt_x.c4d"  
      c4d.documents.SaveDocument(doc, path , c4d.SAVEDOCUMENTFLAGS_0, c4d.FORMAT_C4DEXPORT)  
      c4d.documents.KillDocument(doc)  
      c4d.documents.LoadFile(path)                             
      
        
    if __name__=='__main__':  
      main()  
      
    

    Best wishes
    Martin



  • On 27/11/2014 at 04:41, xxxxxxxx wrote:

    Hello,

    to get the preview image of a (saved) scene simply use GetDocPreviewBitmap().

    best wishes,
    Sebastian



  • On 01/12/2014 at 21:25, xxxxxxxx wrote:

    Hi,
    Thanks for the help guys.

    Thanks 
    Nishant


Log in to reply