def get_surface_as_array(self, order=None): if self.surface is None: raise render.RenderError("No AGG surface defined") # TODO: could these have changed between the time that self.surface # was last updated? wd, ht = self.dims # Get agg surface as a numpy array arr8 = np.fromstring(self.surface.tobytes(), dtype=np.uint8) arr8 = arr8.reshape((ht, wd, len(self.rgb_order))) # adjust according to viewer's needed order return self.reorder(order, arr8)
def render_image(self, rgbobj, dst_x, dst_y): """Render the image represented by (rgbobj) at dst_x, dst_y in the pixel space. *** internal method-- do not use *** """ if self.surface is None: return self.logger.debug("redraw surface") # get window contents as a buffer and paste it into the PIL surface # TODO: allow greater bit depths when support is better in PIL rgb_arr = self.viewer.getwin_array(order=self.rgb_order, dtype=np.uint8) p_image = Image.fromarray(rgb_arr) if self.surface is None or p_image.size != self.surface.size: # window size must have changed out from underneath us! width, height = self.viewer.get_window_size() self.resize((width, height)) if p_image.size != self.surface.size: raise render.RenderError("Rendered image does not match window size") self.surface.paste(p_image)
def get_surface_as_array(self, order=None): if self.surface is None: raise render.RenderError("No OpenCv surface defined") # adjust according to viewer's needed order return self.reorder(order, self.surface)
def get_surface_as_array(self, order=None): raise render.RenderError( "This renderer can only be used with an opengl viewer")