Changeset 1215


Ignore:
Timestamp:
Feb 8, 2014 8:06:33 PM (8 years ago)
Author:
toby
Message:

add .png reading

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r1210 r1215  
    19831983        dlg = wx.FileDialog(
    19841984            self, 'Choose image files', '.', '',
    1985             'Any image file (*.edf;*.tif;*.tiff;*.mar*;*.avg;*.sum;*.img;*.G2img)|'
    1986             '*.edf;*.tif;*.tiff;*.mar*;*.avg;*.sum;*.img;*.G2img;*.zip|'
     1985            'Any supported image file (*.edf;*.tif;*.tiff;*.mar*;*.avg;*.sum;*.img;*.G2img;*.png)|'
     1986            '*.edf;*.tif;*.tiff;*.mar*;*.avg;*.sum;*.img;*.G2img;*.png;*.zip|'
    19871987            'European detector file (*.edf)|*.edf|'
    19881988            'Any detector tif (*.tif;*.tiff)|*.tif;*.tiff|'
     
    19911991            'ADSC Image (*.img)|*.img|'
    19921992            'GSAS-II Image (*.G2img)|*.G2img|'
     1993            'Portable Network Graphics image (*.png)|*.png|'
    19931994            'Zip archive (*.zip)|*.zip|'
    19941995            'All files (*.*)|*.*',
  • trunk/GSASIIIO.py

    r1210 r1215  
    155155            dlg.Destroy()
    156156    return imagefile
    157        
     157
     158def EditImageParms(parent,Data,Comments,Image,filename):
     159    dlg = wx.Dialog(parent, wx.ID_ANY, 'Edit image parameters',
     160                    style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)
     161    def onClose(event):
     162        dlg.EndModal(wx.ID_OK)
     163    mainsizer = wx.BoxSizer(wx.VERTICAL)
     164    h,w = Image.shape[:2]
     165    mainsizer.Add(wx.StaticText(dlg,wx.ID_ANY,
     166                                'File '+str(filename)+'\nImage size: '+str(h)+' x '+str(w)),
     167                  0,wx.ALIGN_LEFT|wx.ALL, 2)
     168   
     169    vsizer = wx.BoxSizer(wx.HORIZONTAL)
     170    vsizer.Add(wx.StaticText(dlg,wx.ID_ANY,u'Wavelength (\xC5) '),
     171               0,wx.ALIGN_LEFT|wx.ALL, 2)
     172    wdgt = G2gd.ValidatedTxtCtrl(dlg,Data,'wavelength')
     173    vsizer.Add(wdgt)
     174    mainsizer.Add(vsizer,0,wx.ALIGN_LEFT|wx.ALL, 2)
     175
     176    vsizer = wx.BoxSizer(wx.HORIZONTAL)
     177    vsizer.Add(wx.StaticText(dlg,wx.ID_ANY,u'Pixel size (\xb5m). Width '),
     178               0,wx.ALIGN_LEFT|wx.ALL, 2)
     179    wdgt = G2gd.ValidatedTxtCtrl(dlg,Data['pixelSize'],0,
     180                                 size=(50,-1))
     181    vsizer.Add(wdgt)
     182    vsizer.Add(wx.StaticText(dlg,wx.ID_ANY,u'  Height '),
     183               wx.ALIGN_LEFT|wx.ALL, 2)
     184    wdgt = G2gd.ValidatedTxtCtrl(dlg,Data['pixelSize'],1,
     185                                 size=(50,-1))
     186    vsizer.Add(wdgt)
     187    mainsizer.Add(vsizer,0,wx.ALIGN_LEFT|wx.ALL, 2)
     188
     189    vsizer = wx.BoxSizer(wx.HORIZONTAL)
     190    vsizer.Add(wx.StaticText(dlg,wx.ID_ANY,u'Sample to detector (mm) '),
     191               0,wx.ALIGN_LEFT|wx.ALL, 2)
     192    wdgt = G2gd.ValidatedTxtCtrl(dlg,Data,'distance')
     193    vsizer.Add(wdgt)
     194    mainsizer.Add(vsizer,0,wx.ALIGN_LEFT|wx.ALL, 2)
     195
     196    vsizer = wx.BoxSizer(wx.HORIZONTAL)
     197    vsizer.Add(wx.StaticText(dlg,wx.ID_ANY,u'Beam center (pixels). X = '),
     198               0,wx.ALIGN_LEFT|wx.ALL, 2)
     199    wdgt = G2gd.ValidatedTxtCtrl(dlg,Data['center'],0,
     200                                 size=(75,-1))
     201    vsizer.Add(wdgt)
     202    vsizer.Add(wx.StaticText(dlg,wx.ID_ANY,u'  Y = '),
     203               wx.ALIGN_LEFT|wx.ALL, 2)
     204    wdgt = G2gd.ValidatedTxtCtrl(dlg,Data['center'],1,
     205                                 size=(75,-1))
     206    vsizer.Add(wdgt)
     207    mainsizer.Add(vsizer,0,wx.ALIGN_LEFT|wx.ALL, 2)
     208
     209    vsizer = wx.BoxSizer(wx.HORIZONTAL)
     210    vsizer.Add(wx.StaticText(dlg,wx.ID_ANY,u'Comments '),
     211               0,wx.ALIGN_LEFT|wx.ALL, 2)
     212    wdgt = G2gd.ValidatedTxtCtrl(dlg,Comments,0,size=(250,-1))
     213    vsizer.Add(wdgt)
     214    mainsizer.Add(vsizer,0,wx.ALIGN_LEFT|wx.ALL, 2)
     215
     216    btnsizer = wx.StdDialogButtonSizer()
     217    OKbtn = wx.Button(dlg, wx.ID_OK, 'Continue')
     218    OKbtn.SetDefault()
     219    OKbtn.Bind(wx.EVT_BUTTON,onClose)
     220    btnsizer.AddButton(OKbtn) # not sure why this is needed
     221    btnsizer.Realize()
     222    mainsizer.Add(btnsizer, 1, wx.ALIGN_CENTER|wx.ALL|wx.EXPAND, 5)
     223    dlg.SetSizer(mainsizer)
     224    dlg.CenterOnParent()
     225    dlg.ShowModal()
     226
    158227def GetImageData(G2frame,imagefile,imageOnly=False):
    159228    '''Read an image with the file reader keyed by the
    160229    file extension
    161230
    162     :param wx.Frame G2frame: main GSAS-II Frame and data object. Note: not used!
     231    :param wx.Frame G2frame: main GSAS-II Frame and data object.
    163232
    164233    :param str imagefile: name of image file
     
    186255    elif ext == '.G2img':
    187256        Comments,Data,Npix,Image = GetG2Image(imagefile)
     257    elif ext == '.png':
     258        import scipy.misc
     259        Image = scipy.misc.imread(imagefile,flatten=True)
     260        Npix = Image.size
     261        Comments = ['no metadata']
     262        Data = {'wavelength': 0.1, 'pixelSize': [200, 200], 'distance': 100.0}
     263        Data['size'] = list(Image.shape)
     264        Data['center'] = [int(i/2) for i in Image.shape]
     265        if not imageOnly:
     266            EditImageParms(G2frame,Data,Comments,Image,imagefile)
    188267    if imageOnly:
    189268        if TRANSP:
Note: See TracChangeset for help on using the changeset viewer.