source: sasview/DataLoader/readers/tiff_reader.py @ 7983c731

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 7983c731 was daa56d0, checked in by Mathieu Doucet <doucetm@…>, 16 years ago

Mostly completed DataLoader?. Reimplemented using REFL registry as base class. Added writing capability and dynamic loading of readers (need zip file support for future py2exe use). All tests pass.

  • Property mode set to 100644
File size: 2.8 KB
Line 
1"""
2    Image reader. Untested.
3"""
4
5"""
6This software was developed by the University of Tennessee as part of the
7Distributed Data Analysis of Neutron Scattering Experiments (DANSE)
8project funded by the US National Science Foundation.
9
10See the license text in license.txt
11
12copyright 2008, University of Tennessee
13"""
14#TODO: load and check data and orientation of the image (needs rendering)
15
16import math, logging, os
17import numpy
18from DataLoader.data_info import Data2D
19   
20class Reader:
21    """
22        Example data manipulation
23    """
24    ## File type
25    type = ["TIF files (*.tif)|*.tif",
26            "JPG files (*.jpg)|*.jpg",
27            "JPEG files (*.jpeg)|*.jpeg",
28            "PNG files (*.png)|*.png",
29            "TIFF files (*.tiff)|*.tiff",
30            "BMP files (*.bmp)|*.bmp",
31            "GIF files (*.gif)|*.gif",
32            ]
33    ## Extension
34    ext  = ['.tif', '.jpg', '.png', '.jpeg', '.tiff', '.gif', '.bmp']   
35       
36    def read(self, filename=None):
37        """
38            Open and read the data in a file
39            @param file: path of the file
40        """
41        try:
42            import Image
43        except:
44            raise RuntimeError, "tiff_reader: could not load file. Missing Image module."
45       
46        # Instantiate data object
47        output = Data2D()
48        output.filename = os.path.basename(filename)
49           
50        # Read in the image
51        try:
52            im = Image.open(filename)
53        except :
54            raise  RuntimeError,"cannot open %s"%(filename)
55        data = im.getdata()
56       
57        # Initiazed the output data object
58        output.data = numpy.zeros([im.size[0],im.size[1]])
59       
60        # Initialize
61        x_vals = []
62        y_vals = [] 
63
64        # x and y vectors
65        for i_x in range(im.size[0]):
66            x_vals.append(i_x)
67           
68        itot = 0
69        for i_y in range(im.size[1]):
70            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
78           
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
85               
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]
92        output.x_bins     = x_vals
93        output.y_bins     = y_vals
94        output.xmin       = 0
95        output.xmax       = im.size[0]-1
96        output.ymin       = 0
97        output.ymax       = im.size[0]-1
98       
99        return output
100       
101
102
Note: See TracBrowser for help on using the repository browser.