Changeset 2428


Ignore:
Timestamp:
Aug 17, 2016 1:46:10 PM (5 years ago)
Author:
vondreele
Message:

allow saving rigid body drawing as jpeg/tiff/bmp

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIplot.py

    r2425 r2428  
    58735873        return Bonds
    58745874                       
     5875    Mydir = G2frame.dirname
    58755876    Wt = np.array([255,255,255])
    58765877    Rd = np.array([255,0,0])
     
    59515952        glLightfv(GL_LIGHT0,GL_DIFFUSE,[1,1,1,1])
    59525953       
    5953 #    def SetRBOrigin(newxy):
    5954 ##first get translation vector in screen coords.       
    5955 #        oldxy = defaults['oldxy']
    5956 #        if not len(oldxy): oldxy = list(newxy)
    5957 #        dxy = newxy-oldxy
    5958 #        defaults['oldxy'] = list(newxy)
    5959 #        V = np.array([dxy[0],-dxy[1],0.])/100.
    5960 #        Q = defaults['Quaternion']
    5961 #        V = G2mth.prodQVQ(G2mth.invQ(Q),V)
    5962 #        rbData['rbXYZ'] += V
    5963 #        PlotRigidBody(G2frame,rbType,AtInfo,rbData,defaults)
    5964 #               
    59655954    def SetRotation(newxy):
    59665955#first get rotation vector in screen coords. & angle increment       
     
    61046093        Draw('size')
    61056094       
     6095    def OnKeyBox(event):
     6096        mode = cb.GetValue()
     6097        if mode in ['jpeg','bmp','tiff',]:
     6098            try:
     6099                import Image as Im
     6100            except ImportError:
     6101                try:
     6102                    from PIL import Image as Im
     6103                except ImportError:
     6104                    print "PIL/pillow Image module not present. Cannot save images without this"
     6105                    raise Exception("PIL/pillow Image module not found")
     6106           
     6107            Fname = os.path.join(Mydir,Page.name+'.'+mode)
     6108            print Fname+' saved'
     6109            size = Page.canvas.GetSize()
     6110            glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
     6111            if mode in ['jpeg',]:
     6112                Pix = glReadPixels(0,0,size[0],size[1],GL_RGBA, GL_UNSIGNED_BYTE)
     6113                im = Im.new("RGBA", (size[0],size[1]))
     6114            else:
     6115                Pix = glReadPixels(0,0,size[0],size[1],GL_RGB, GL_UNSIGNED_BYTE)
     6116                im = Im.new("RGB", (size[0],size[1]))
     6117            try:
     6118                im.frombytes(Pix)
     6119            except AttributeError:
     6120                im.fromstring(Pix)
     6121            im = im.transpose(Im.FLIP_TOP_BOTTOM)
     6122            im.save(Fname,mode)
     6123            cb.SetValue(' save as/key:')
     6124            G2frame.G2plotNB.status.SetStatusText('Drawing saved to: '+Fname,1)
     6125
    61066126    try:
    61076127        plotNum = G2frame.G2plotNB.plotList.index('Rigid body')
     
    61156135        view = False
    61166136        altDown = False
     6137#    GSASIIpath.IPyBreak()
     6138    Page.name = rbData['RBname']
    61176139    G2frame.G2plotNB.RaisePageNoRefresh(Page)
     6140    Page.Choice = None
     6141    choice = [' save as:','jpeg','tiff','bmp',]
     6142    cb = wx.ComboBox(G2frame.G2plotNB.status,style=wx.CB_DROPDOWN|wx.CB_READONLY,choices=choice)
     6143    cb.Bind(wx.EVT_COMBOBOX, OnKeyBox)
     6144    cb.SetValue(' save as/key:')
     6145   
    61186146    Font = Page.GetFont()
    61196147    Page.canvas.Bind(wx.EVT_MOUSEWHEEL, OnMouseWheel)
     
    61276155    Page.canvas.SetCurrent()
    61286156    Draw('main')
     6157    Draw('main')    #to fill both buffers so save works
    61296158
    61306159################################################################################
Note: See TracChangeset for help on using the changeset viewer.