Changeset bdd71f4 in sasview for DataLoader/readers/tiff_reader.py


Ignore:
Timestamp:
Mar 27, 2009 3:22:51 PM (15 years ago)
Author:
Jae Cho <jhjcho@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
2c0f2a5
Parents:
1047275
Message:

working on tiff reader

File:
1 edited

Legend:

Unmodified
Added
Removed
  • DataLoader/readers/tiff_reader.py

    rdaa56d0 rbdd71f4  
    1616import math, logging, os 
    1717import numpy 
    18 from DataLoader.data_info import Data2D 
     18from DataLoader.data_info import Image2D#Data2D 
    1919     
    2020class Reader: 
     
    4545         
    4646        # Instantiate data object 
    47         output = Data2D() 
     47        output = Image2D() 
    4848        output.filename = os.path.basename(filename) 
    4949             
     
    5353        except : 
    5454            raise  RuntimeError,"cannot open %s"%(filename) 
    55         data = im.getdata() 
     55        data = im.load() 
     56        print im.mode 
     57        im.show() 
     58        x_range = im.size[0] 
     59        y_range = im.size[1] 
    5660         
    5761        # Initiazed the output data object 
    58         output.data = numpy.zeros([im.size[0],im.size[1]]) 
    59          
     62        output.image = numpy.zeros([y_range,x_range]) 
     63 
    6064        # Initialize  
    6165        x_vals = [] 
    6266        y_vals = []  
     67        if im.mode == "P": 
     68            data=im.split() 
    6369 
    6470        # x and y vectors 
    65         for i_x in range(im.size[0]): 
     71        for i_x in range(x_range): 
    6672            x_vals.append(i_x) 
    6773             
    68         itot = 0 
    69         for i_y in range(im.size[1]): 
     74         
     75        for i_y in range(y_range): 
    7076            y_vals.append(i_y) 
    71  
    72         for val in data: 
    73             try: 
    74                 value = float(val) 
    75             except: 
    76                 logging.error("tiff_reader: had to skip a non-float point") 
    77                 continue 
     77         
     78        for i_x in range(x_range): 
     79            for i_y in range(y_range): 
    7880             
    79             # Get bin number 
    80             if math.fmod(itot, im.size[0])==0: 
    81                 i_x = 0 
    82                 i_y += 1 
    83             else: 
    84                 i_x += 1 
     81                try: 
     82                    if data[i_x,i_y].__class__.__name__=="tuple":                      
     83                         
     84                        if len(data[i_x,i_y]) == 3:    
     85                            R,G,B= data[i_x,i_y] 
     86                            #Converting to L Mode: uses the ITU-R 601-2 luma transform. 
     87                            value = 255-float(R * 299/1000 + G * 587/1000 + B * 114/1000)  
     88                          
     89                        elif len(data[i_x,i_y]) == 4:    
     90                            R,G,B,I = data[i_x,i_y] 
     91                            #Take only I  
     92                            value = 255-float(R * 299/1000 + G * 587/1000 + B * 114/1000)-float(I) 
     93                    else: 
     94                        #Take it as Intensity 
     95                        #value = 255-float(data[i_x,i_y]) 
     96                except: 
     97                    logging.error("tiff_reader: had to skip a non-float point") 
     98                    continue 
    8599                 
    86             output.data[im.size[1]-1-i_y][i_x] = value 
    87              
    88             itot += 1 
    89                  
    90         output.xbins      = im.size[0] 
    91         output.ybins      = im.size[1] 
     100                   
     101                output.image[y_range-i_y-1,i_x] = value 
     102         
     103        output.xbins      = x_range 
     104        output.ybins      = y_range 
    92105        output.x_bins     = x_vals 
    93106        output.y_bins     = y_vals 
    94107        output.xmin       = 0 
    95         output.xmax       = im.size[0]-1 
     108        output.xmax       = x_range 
    96109        output.ymin       = 0 
    97         output.ymax       = im.size[0]-1 
     110        output.ymax       = y_range 
    98111         
    99112        return output 
Note: See TracChangeset for help on using the changeset viewer.