/usr/lib/python2.7/dist-packages/ginga/RGBImage.py is in python-ginga 2.7.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | #
# RGBImage.py -- Abstraction of an generic data image.
#
# This is open-source software licensed under a BSD license.
# Please see the file LICENSE.txt for details.
#
from ginga import trcalc
from ginga.util import io_rgb
from ginga.misc import Bunch
from ginga.BaseImage import BaseImage, Header
import numpy
class RGBImage(BaseImage):
def __init__(self, data_np=None, metadata=None,
logger=None, name=None, order=None,
ioclass=io_rgb.RGBFileHandler):
BaseImage.__init__(self, data_np=data_np, metadata=metadata,
logger=logger, order=order, name=name)
self.io = ioclass(self.logger)
self.hasAlpha = 'A' in self.order
def set_color(self, r, g, b):
# TODO: handle other sizes
ch_max = 255
red = self.get_slice('R')
red[:] = int(ch_max * r)
grn = self.get_slice('G')
grn[:] = int(ch_max * g)
blu = self.get_slice('B')
blu[:] = int(ch_max * b)
def load_file(self, filepath):
kwds = Header()
metadata = {'header': kwds, 'path': filepath}
# TODO: ideally we would be informed by channel order
# in result by io_rgb
data_np = self.io.load_file(filepath, kwds)
self.set_data(data_np, metadata=metadata)
if not (self.name is None):
self.set(name=self.name)
def save_as_file(self, filepath):
data = self._get_data()
hdr = self.get_header()
self.io.save_file_as(filepath, data, hdr)
def get_buffer(self, format, output=None):
"""Get image as a buffer in (format).
Format should be 'jpeg', 'png', etc.
"""
return self.io.get_buffer(self._get_data(), self.get_header(),
format, output=output)
def copy(self, astype=None):
other = RGBImage()
self.transfer(other, astype=astype)
return other
def has_alpha(self):
order = self.get_order()
return 'A' in order
def insert_alpha(self, pos, alpha):
if not self.has_alpha():
order = list(self.order)
l = [self.get_slice(c) for c in order]
wd, ht = self.get_size()
a = numpy.zeros((ht, wd), dtype=numpy.uint8)
a.fill(alpha)
l.insert(pos, a)
self._data = numpy.dstack(l)
order.insert(pos, 'A')
self.order = ''.join(order)
def get_scaled_cutout_wdht(self, x1, y1, x2, y2, new_wd, new_ht,
method='basic'):
newdata, (scale_x, scale_y) = trcalc.get_scaled_cutout_wdht(
self._get_data(), x1, y1, x2, y2, new_wd, new_ht,
interpolation=method, logger=self.logger)
res = Bunch.Bunch(data=newdata, scale_x=scale_x, scale_y=scale_y)
return res
def get_scaled_cutout(self, x1, y1, x2, y2, scale_x, scale_y,
method='basic'):
newdata, (scale_x, scale_y) = trcalc.get_scaled_cutout_basic(
self._get_data(), x1, y1, x2, y2, scale_x, scale_y,
interpolation=method, logger=self.logger)
res = Bunch.Bunch(data=newdata, scale_x=scale_x, scale_y=scale_y)
return res
#END
|