def outputFiles(self, filename, attachLogo=False, logoText=None): rendered = self.getTarget().screenshot() if attachLogo: from java.awt.image import BufferedImage from com.raytheon.uf.common.localization import PathManagerFactory noaa = 'pyViz/logos/noaalogo2.png' nws = 'pyViz/logos/nwslogo.png' pathMgr = PathManagerFactory.getPathManager() noaa = pathMgr.getStaticFile(noaa) nws = pathMgr.getStaticFile(nws) noaaImage = ImageIO.read(noaa) nwsImage = ImageIO.read(nws) height = rendered.getHeight() + noaaImage.getHeight() finalBuf = BufferedImage(rendered.getWidth(), height, BufferedImage.TYPE_INT_ARGB) graphics = finalBuf.createGraphics() graphics.drawImage(rendered, 0, 0, None) graphics.drawImage(noaaImage, 0, rendered.getHeight(), None) graphics.fillRect(noaaImage.getWidth(), rendered.getHeight(), rendered.getWidth() - noaaImage.getWidth() - nwsImage.getWidth(), rendered.getHeight()) if logoText is not None: from java.awt import Color from com.raytheon.uf.viz.core.font import FontAdapter graphics.setColor(Color.BLACK) graphics.setFont(FontAdapter.getAWTFont(self.getTarget().getDefaultFont())) fm = graphics.getFontMetrics() textBounds = fm.getStringBounds(logoText, graphics) graphics.drawString(logoText, int((rendered.getWidth() - textBounds.getWidth()) / 2), \ int(rendered.getHeight() + (noaaImage.getHeight() / 2) + textBounds.getHeight() / 2)) graphics.drawImage(nwsImage, finalBuf.getWidth() - nwsImage.getWidth(), rendered.getHeight(), None) finalBuf.flush() self.outputImage(finalBuf, filename) else: self.outputImage(rendered, filename)
def scale_to_fill(buffered_image): raster = buffered_image.getData() width = raster.getWidth() height = raster.getHeight() #Get extreem values from the image max_x = 0 min_x = width max_y = 0 min_y = height for x in range(0, width): for y in range(0,height): color = pixel_has_color(x,y, raster) if(color): if x > max_x: max_x = x if x < min_x: min_x = x if y > max_y: max_y = y if y < min_y: min_y = y #Cut out the part of image containing colored pixels sub_image = buffered_image.getSubimage(min_x, min_y, max_x-min_x+1,max_y-min_y+1) #Scale the image resized_image = BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY) g = resized_image.createGraphics() g.drawImage(sub_image, 0, 0, width, height, None) g.dispose() return resized_image
def run(self): try: bounds = self.layer.getMinimalBoundingBox(Patch, True) filepath = os.path.join( self.target_dir, "section-" + str(self.i).zfill(5) + "-[x=" + str(bounds.x) + "-y=" + str(bounds.y) + "-width=" + str(bounds.width) + "-height=" + str(bounds.height) + "].zip") if os.path.exists(filepath): System.out.println("Skipping: " + filepath) return # Export System.out.println("Preparing: " + os.path.split(filepath)[1]) img = self.layer.getProject().getLoader().getFlatAWTImage( self.layer, bounds, 1.0, -1, ImagePlus.GRAY8, Patch, None, False, Color.black) bi = BufferedImage(img.getWidth(None), img.getHeight(None), BufferedImage.TYPE_BYTE_GRAY) g = bi.createGraphics() g.drawImage(img, 0, 0, None) g.dispose() g = None imp = ImagePlus(str(self.layer.getZ()), ByteProcessor(bi)) FileSaver(imp).saveAsZip(filepath) bi.flush() bi = None imp.flush() imp = None ip = None System.out.println("Saved: " + os.path.split(filepath)[1]) except: import sys e = sys.exc_info() System.out.println("Error:" + str(e[0]) + "\n" + str(e[1]) + "\n" + str(e[2]))
def run(self): try: filepath = self.makeFilePath() if os.path.exists(filepath): return x, y, k = self.coords width, height, n_layers = self.dimensions # Cube's field of view in XY fov = Rectangle(x, y, width, height) # Join the bounds of the layers r = None for b in self.bounds[k:min(k + n_layers, len(bounds))]: if r is None: r = Rectangle(b.x, b.y, b.width, b.height) else: r.add(b) if not fov.intersects(r): # Would be empty return drawImage = Graphics2D.getDeclaredMethod( "drawImage", [Image, AffineTransform, ImageObserver]) drawImage.setAccessible(True) dispose = Graphics.getDeclaredMethod("dispose", []) dispose.setAccessible(True) # Populate and write cube stack = ImageStack(width, height) for layer in self.layers[k:min(k + n_layers, len(self.layers))]: img = layer.getProject().getLoader().getFlatAWTImage( layer, fov, 1.0, -1, ImagePlus.GRAY8, Patch, None, False, Color.black) bi = BufferedImage(img.getWidth(None), img.getHeight(None), BufferedImage.TYPE_BYTE_GRAY) g = bi.createGraphics() aff = AffineTransform(1, 0, 0, 1, 0, 0) #g.drawImage(img, aff, None) # Necessary to bypass issues that result in only using 7-bits and with the ByteProcessor constructor drawImage.invoke(g, [img, aff, None]) #g.dispose() dispose.invoke(g, []) g = None img = None stack.addSlice("", ByteProcessor(bi)) bi.flush() bi = None imp = ImagePlus("x=%s y=%s k=%s" % (x, y, k), stack) Utils.ensure(filepath) FileSaver(imp).saveAsZip(filepath) imp.flush() imp = None except: e = sys.exc_info() System.out.println("Error:" + str(e[0]) + "\n" + str(e[1]) + "\n" + str(e[2])) System.out.println(traceback.format_exception(e[0], e[1], e[2]))
def get_font_metrics(font_name, font_size): from java.awt.image import BufferedImage from java.awt import Font tmp_img = BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB) g = tmp_img.createGraphics() return g.getFontMetrics((Font(font_name, Font.PLAIN, int(font_size))))
def getScreenPanel(): global mainScreen global scrPanel if not scrPanel: mainScreen = JButton() cursorImg = BufferedImage(16,16,BufferedImage.TYPE_INT_ARGB) blankCursor = Toolkit.getDefaultToolkit().createCustomCursor(cursorImg, Point(0,0), "blank cursor") mainScreen.setCursor(blankCursor) mainScreen.setPreferredSize( Dimension(700, 700)) image = BufferedImage(700, 700, BufferedImage.TYPE_INT_ARGB) g = image.createGraphics() g.setColor(Color.BLACK) g.fillRect(0, 0, 700, 700) g.setColor(Color.WHITE) g.setFont(Font("Serif", Font.BOLD, 20)) g.drawString("Move your mouse here to controlfocused device.", 50, 30) mainScreenImg = image mainScreen.setIcon(swing.ImageIcon(image)) mouseListener = ScrMouseListener() mainScreen.addMouseListener(mouseListener) mainScreen.addMouseMotionListener(mouseListener) mainScreen.addMouseWheelListener(mouseListener) mainScreen.setFocusable(True) keyListener = ScrKeyListener() mainScreen.addKeyListener(keyListener) scrPanel = JPanel() scrPanel.setLayout(BoxLayout(scrPanel, BoxLayout.Y_AXIS)) scrPanel.add(mainScreen) scrPanel.setFocusable(True) return scrPanel
def scale_to_fill(buffered_image): raster = buffered_image.getData() width = raster.getWidth() height = raster.getHeight() #Get extreem values from the image max_x = 0 min_x = width max_y = 0 min_y = height for x in range(0, width): for y in range(0,height): color = pixel_has_color(x,y, raster) if(color): if x > max_x: max_x = x if x < min_x: min_x = x if y > max_y: max_y = y if y < min_y: min_y = y #Cut out the part of image containing colored pixels sub_image = buffered_image.getSubimage(min_x, min_y, max_x-min_x+1,max_y-min_y+1) #Scale the image resized_image = BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY) g = resized_image.createGraphics() g.drawImage(sub_image, 0, 0, width, height, None) g.dispose() return resized_image
def resize(self, image, width, height): bi = BufferedImage(width, height, BufferedImage.TRANSLUCENT) g2d = bi.createGraphics() g2d.addRenderingHints(RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY)) g2d.drawImage(image, 0, 0, width, height, None) g2d.dispose() return bi;
def outputFiles(self, filename, attachLogo=False, logoText=None): rendered = self.getTarget().screenshot() if attachLogo: from java.awt.image import BufferedImage noaa = File(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'logos/noaalogo2.png')) nws = File(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'logos/nwslogo.png')) noaaImage = ImageIO.read(noaa) nwsImage = ImageIO.read(nws) height = rendered.getHeight() + noaaImage.getHeight() finalBuf = BufferedImage(rendered.getWidth(), height, BufferedImage.TYPE_INT_ARGB) graphics = finalBuf.createGraphics() graphics.drawImage(rendered, 0, 0, None) graphics.drawImage(noaaImage, 0, rendered.getHeight(), None) graphics.fillRect(noaaImage.getWidth(), rendered.getHeight(), rendered.getWidth() - noaaImage.getWidth() - nwsImage.getWidth(), rendered.getHeight()) if logoText is not None: from java.awt import Color graphics.setColor(Color.BLACK) graphics.setFont(self.getAWTFont(self.getTarget().getDefaultFont())) fm = graphics.getFontMetrics() textBounds = fm.getStringBounds(logoText, graphics) graphics.drawString(logoText, int((rendered.getWidth() - textBounds.getWidth()) / 2), \ int(rendered.getHeight() + (noaaImage.getHeight() / 2) + textBounds.getHeight() / 2)) graphics.drawImage(nwsImage, finalBuf.getWidth() - nwsImage.getWidth(), rendered.getHeight(), None) finalBuf.flush() self.outputImage(finalBuf, filename) else: self.outputImage(rendered, filename)
def average_hash_and_sizes(self): height = 0 width = 0 if isJython(): image = ImageIO.read(File(self.image_path)) height = image.getHeight() width = image.getWidth() newImage = BufferedImage(self.hash_size, self.hash_size, BufferedImage.TYPE_INT_ARGB) g = newImage.createGraphics() g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC) g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY) g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON) g.drawImage(image, 0, 0, self.hash_size, self.hash_size, None) g.dispose() allchannelpixels = [[], [], [], []] for i in range(self.hash_size): for j in range(self.hash_size): pixel = int(newImage.getRGB(i, j)) allchannelpixels[0].append((pixel >> 16) & 0xFF) allchannelpixels[1].append((pixel >> 8) & 0xFF) allchannelpixels[2].append((pixel) & 0xFF) allchannelpixels[3].append((pixel >> 24) & 0xFF) elif isIronPython(): srcImage = Bitmap(self.image_path) height = srcImage.Height width = srcImage.Width newImage = Bitmap(self.hash_size, self.hash_size) gr = Graphics.FromImage(newImage) gr.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias gr.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic gr.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality gr.DrawImage(srcImage, Rectangle(0, 0, self.hash_size, self.hash_size)) allchannelpixels = [[], [], [], []] for i in range(self.hash_size): for j in range(self.hash_size): pixel = newImage.GetPixel(i, j) allchannelpixels[0].append(int(pixel.R)) allchannelpixels[1].append(int(pixel.G)) allchannelpixels[2].append(int(pixel.B)) allchannelpixels[3].append(int(pixel.A)) else: self.image = Image.open(self.image_path) width, height = self.image.size image = self.image.resize((self.hash_size, self.hash_size), Image.ANTIALIAS) # image.show() allchannelpixels = [ list(channel.getdata()) for channel in image.split() ] bits = [] for pixels in allchannelpixels: bits.append(self.getBitString(pixels)) return bits, width, height
def resizeImage(self, fullSizeImage): bufferedImage = BufferedImage(SwingingMonkeyCommander._preferredWidth, SwingingMonkeyCommander._preferredHeight, BufferedImage.TRANSLUCENT) graphics2d = bufferedImage.createGraphics() graphics2d.addRenderingHints(RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY)) graphics2d.drawImage(fullSizeImage, 0, 0, SwingingMonkeyCommander._preferredWidth, SwingingMonkeyCommander._preferredHeight, None) graphics2d.dispose() SwingingMonkeyCommander._widthScale = float(fullSizeImage.getWidth()) / float(bufferedImage.getWidth()) SwingingMonkeyCommander._heightScale = float(fullSizeImage.getHeight()) / float(bufferedImage.getHeight()) return bufferedImage
class PyColorButton(JButton): def __init__(self, color, action=None): JButton.__init__(self) self._image = BufferedImage(70, 12, BufferedImage.TYPE_INT_ARGB) g = self._image.createGraphics() g.setColor(color) g.fillRect(0, 0, self._image.width, self._image.height) self._icon = ImageIcon(self._image) self.icon = self._icon if action is not None: self.actionPerformed = action def set_color(self, color): g = self._image.createGraphics() g.setColor(color) g.fillRect(0, 0, self._image.width, self._image.height) self._icon = ImageIcon(self._image) self.icon = self._icon
def saveToPNG(p,filename): from java.awt.image import BufferedImage from javax.imageio import ImageIO from java.io import File bi = BufferedImage(p.size.width, p.size.height, BufferedImage.TYPE_INT_ARGB) g = bi.createGraphics() p.invalidate() p.validate() p.paint(g) g.dispose(); ImageIO.write(bi,"png", File(filename));
def updateProduct(self, *args): try: value = self.lstProducts.getSelectedValue() except: return if value == None: return #try: if True: width = 150 height = 150 #gvSIGPath = Utilities.TEMPDIRECTORYPATH gvSIGPath = "/home/osc/temp" outputPath = os.path.join( gvSIGPath, value.getName() + "_%sx%s.jpg" % (width, height)) #Utilities.TEMPDIRECTORYPATH if os.path.exists(outputPath) == False: url = value.getPreviewLink() f = download(url) total_size = int(f.headers["Content-Length"]) MB_size = round(total_size / 1048576, 2) block_size = 1024 * 1024 outputPathFull = gvSIGPath + value.getName() + ".jpg" with open(outputPath, "wb") as file: while True: block = f.read(block_size) dSize = round( int(os.stat(outputPath).st_size) / 1048576, 2) print "(" + str(dSize) + "/" + str( MB_size) + " MB) " + url + "Downloading" if not block: break file.write(block) img = ImageIO.read(outputPathFull) tmp = img.getScaledInstance(width, height, Image.SCALE_SMOOTH) resized = BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB) g2d = resized.createGraphics() g2d.drawImage(tmp, 0, 0, None) g2d.dispose() ImageIO.write(resized, "jpg", outputPath) else: print "already downloaded" myPicture = ImageIcon(ImageIO.read(File(outputPath))) self.txtInfo.setText(value.getInfoString()) self.tabInfo.updateUI() self.lstProducts.updateUI() self.lstProducts.revalidate() self.lstProducts.repaint() #except: # myPicture = ImageIcon() self.lblPreview.setIcon(myPicture)
def saveToPNG(p, filename): from java.awt.image import BufferedImage from javax.imageio import ImageIO from java.io import File bi = BufferedImage(p.size.width, p.size.height, BufferedImage.TYPE_INT_ARGB) g = bi.createGraphics() p.invalidate() p.validate() p.paint(g) g.dispose() ImageIO.write(bi, "png", File(filename))
def snapshot(frame, box): bi = BufferedImage(box.width, box.height, BufferedImage.TYPE_INT_RGB) g = bi.createGraphics() g.translate(-box.x, -box.y) #all black! # frame.paintAll(g) #only swing components! # frame.paint(g) #only swing components! # frame.update(g) #together, also only swing and with errors ##frame.update(g) ##frame.paint(g) # locks the entire graphics machinery # frame.printAll(g) # Finally, the right one: SwingUtilities.invokeAndWait(PrintAll(frame, g)) return bi
def save_as_png(p,filename): """ saves plot window (G2Dialog) created by newPlot(title) method as a png graphics file """ from java.awt.image import BufferedImage from javax.imageio import ImageIO from java.io import File bi = BufferedImage(p.size.width, p.size.height, BufferedImage.TYPE_INT_ARGB) g = bi.createGraphics() p.invalidate() p.validate() p.paint(g) g.dispose(); ImageIO.write(bi,"png", File(filename));
def snapshot(frame, box): bi = BufferedImage(box.width, box.height, BufferedImage.TYPE_INT_RGB) g = bi.createGraphics() g.translate(-box.x, -box.y) # all black! # frame.paintAll(g) # only swing components! # frame.paint(g) # only swing components! # frame.update(g) # together, also only swing and with errors ##frame.update(g) ##frame.paint(g) # locks the entire graphics machinery # frame.printAll(g) # Finally, the right one: SwingUtilities.invokeAndWait(PrintAll(frame, g)) return bi
def save_as_png(p, filename): """ saves plot window (G2Dialog) created by newPlot(title) method as a png graphics file """ from java.awt.image import BufferedImage from javax.imageio import ImageIO from java.io import File bi = BufferedImage(p.size.width, p.size.height, BufferedImage.TYPE_INT_ARGB) g = bi.createGraphics() p.invalidate() p.validate() p.paint(g) g.dispose() ImageIO.write(bi, "png", File(filename))
def getContentPane(): global contentPane global REMAP_WIDTH global REMAP_HEIGHT global MARGIN if not contentPane: global mainScreen global mainScreenImg mainScreen = JLabel() cursorImg = BufferedImage(16,16,BufferedImage.TYPE_INT_ARGB) blankCursor = Toolkit.getDefaultToolkit().createCustomCursor(cursorImg, Point(0,0), "blank cursor") mainScreen.setCursor(blankCursor) mainScreen.setPreferredSize( Dimension(REMAP_WIDTH + MARGIN, REMAP_HEIGHT + MARGIN)) mainScreen.setText("main screen!") image = BufferedImage(REMAP_WIDTH + MARGIN, REMAP_HEIGHT + MARGIN , BufferedImage.TYPE_INT_ARGB) g = image.createGraphics() g.setColor(Color.BLACK) g.fillRect(0, 0, REMAP_WIDTH + MARGIN, REMAP_HEIGHT + MARGIN) g.setColor(Color.WHITE) g.setFont(Font("Serif", Font.BOLD, 20)) g.drawString("Cursor will display on your device.", 50, 30) mainScreenImg = image mainScreen.setIcon(swing.ImageIcon(image)) mouseListener = ScrMouseListener() mainScreen.addMouseListener(mouseListener) mainScreen.addMouseMotionListener(mouseListener) mainScreen.addMouseWheelListener(mouseListener) keyListener = ScrKeyListener() mainScreen.addKeyListener(keyListener) mainScreen.setFocusable(True) scrPanel = JPanel() scrPanel.setLayout(BoxLayout(scrPanel, BoxLayout.Y_AXIS)) scrPanel.add(mainScreen) contentPane = JPanel() contentPane.setLayout(BorderLayout()) contentPane.add(scrPanel, BorderLayout.WEST) # contentPAne.add(controlPanel(). BorderLayout.EAST) return contentPane
def run(self): System.out.println("run") # zero-pad up to 10 digits bi = None try: title = str(self.i) while len(title) < 10: title = '0' + title bi = BufferedImage(self.bounds.width, self.bounds.height, BufferedImage.TYPE_INT_RGB) g = bi.createGraphics() g.drawImage(self.borders, 0, 0, None) g.drawImage(self.img, self.insets.left, self.insets.top, None) FileSaver(ImagePlus(title, ColorProcessor(bi))).saveAsTiff(self.dir + title + '.tif') except Exception, e: print e e.printStackTrace()
def get_image(self): """Generate a BufferedImage representing the current environment, for use in interactivemode display.""" # copy map bitmap = BufferedImage(self.map.getColorModel(), self.map.copyData(None), False, None); # draw agent graphics = bitmap.createGraphics() graphics.setColor(Color.orange) agentsize = 0.2 x, y = self.pt_to_pixel((self.state[0] - agentsize / 2, self.state[1] + agentsize / 2)) graphics.fillRect(x, y, int(agentsize * bitmap.getWidth() / self.imgsize[0]), int(agentsize * bitmap.getHeight() / self.imgsize[1])) return bitmap
def run(self): System.out.println("run") # zero-pad up to 10 digits bi = None try: title = str(self.i) while len(title) < 10: title = "0" + title bi = BufferedImage(self.bounds.width, self.bounds.height, BufferedImage.TYPE_INT_RGB) g = bi.createGraphics() g.drawImage(self.borders, 0, 0, None) g.drawImage(self.img, self.insets.left, self.insets.top, None) FileSaver(ImagePlus(title, ColorProcessor(bi))).saveAsTiff(self.dir + title + ".tif") except Exception, e: print e e.printStackTrace()
def addSS(self,event): clipboard = Toolkit.getDefaultToolkit().getSystemClipboard() try: image = clipboard.getData(DataFlavor.imageFlavor) except: self.popup("Clipboard not contains image") return vulnPath = self.projPath.getText() + "/" + self.clearStr(self.vulnName.getText()) if not os.path.exists(vulnPath): os.makedirs(vulnPath) name = self.clearStr(self.vulnName.getText()) + str(random.randint(1, 99999))+".jpg" fileName = self.projPath.getText()+"/"+ self.clearStr(self.vulnName.getText()) + "/" + name file = File(fileName) bufferedImage = BufferedImage(image.getWidth(None), image.getHeight(None), BufferedImage.TYPE_INT_RGB); g = bufferedImage.createGraphics(); g.drawImage(image, 0, 0, bufferedImage.getWidth(), bufferedImage.getHeight(), Color.WHITE, None); ImageIO.write(bufferedImage, "jpg", file) self.addVuln(self) self.ssList.setSelectedValue(name,True)
def get_image(self): """Generate a BufferedImage representing the current environment, for use in interactivemode display.""" # copy map bitmap = BufferedImage(self.map.getColorModel(), self.map.copyData(None), False, None) # draw agent graphics = bitmap.createGraphics() graphics.setColor(Color.orange) agentsize = 0.2 x, y = self.pt_to_pixel( (self.state[0] - agentsize / 2, self.state[1] + agentsize / 2)) graphics.fillRect( x, y, int(agentsize * bitmap.getWidth() / self.imgsize[0]), int(agentsize * bitmap.getHeight() / self.imgsize[1])) return bitmap
def split_image(image, length): piece_width = image.getWidth() / length piece_height = image.getHeight() / length images = [] for i in range(length): for j in range(length): split = BufferedImage(piece_width, piece_height, image.getType()) g = split.createGraphics() g.drawImage(image, 0, 0 ,\ piece_width,\ piece_height,\ piece_width * j,\ piece_height * i,\ piece_width * j + piece_width,\ piece_height * i + piece_height,\ None); g.dispose(); images.append(split) return images;
class VideoRecorder(): def __init__(self, obj, filename, res, ulx=0, uly=0): self.obj = obj self.name = "" self.img = None self.ulx = ulx self.uly = uly res = res.lower() li = res.split("x") isOk = True try: self.width = int(li[0].strip()) self.height = int(li[1].strip()) except: isOk = False if (not isOk) or ((self.width, self.height) not in resolutions): print "Illegal resolution:", res print "Supported:", VideoRecorder.getSupportedResolutions() return self.enc = SequenceEncoder(File(File(filename).getAbsolutePath())) if str(type(obj)) == "<type 'ch.aplu.turtle.Turtle'>": self.name = "Turtle" self.traceBuf = obj.getPlayground().getTraceBuffer() self.turtleBuf = obj.getPlayground().getTurtleBuffer() self.img = BufferedImage(self.width, self.height, BufferedImage.TYPE_INT_ARGB) self.g2D = self.img.createGraphics() elif str(type(obj)) == "<class 'gturtle.TurtleFrame'>": self.name = "TurtleFrame" self.traceBuf = obj.getPlayground().getTraceBuffer() self.turtleBuf = obj.getPlayground().getTurtleBuffer() self.img = BufferedImage(self.width, self.height, BufferedImage.TYPE_INT_ARGB) self.g2D = self.img.createGraphics() elif str(type(obj)) == "<type 'ch.aplu.util.GPanel'>": self.name = "GPanel" self.img = BufferedImage(self.width, self.height, BufferedImage.TYPE_INT_ARGB) self.g2D = self.img.createGraphics() self.panelBuf = obj.getWindow().getBufferedImage() elif str(type(obj)) == "<type 'ch.aplu.jgamegrid.GameGrid'>": self.name = "GameGrid" self.img = BufferedImage(self.width, self.height, BufferedImage.TYPE_INT_ARGB) self.g2D = self.img.createGraphics() @staticmethod def getSupportedResolutions(): s = "" n = len(resolutions) for i in range(n - 1): s += str(resolutions[i][0]) + "x" + str(resolutions[i][1]) + "," s += str(resolutions[n - 1][0]) + "x" + str(resolutions[n - 1][1]) return s def captureImage(self, nb=1): if self.name == "": return for i in range(nb): self.encode() def encode(self): if self.name == 'Turtle': self.g2D.drawImage(self.traceBuf, self.ulx, self.uly, None) if not self.obj.isHidden(): self.g2D.drawImage(self.turtleBuf, self.ulx, self.uly, None) elif self.name == 'TurtleFrame': self.g2D.drawImage(self.traceBuf, self.ulx, self.uly, None) self.g2D.drawImage(self.turtleBuf, self.ulx, self.uly, None) elif self.name == 'GPanel': self.g2D.drawImage(self.panelBuf, self.ulx, self.uly, None) elif self.name == 'GameGrid': ggBuf = self.obj.getImage(self.width, self.height) self.g2D.drawImage(ggBuf, self.ulx, self.uly, None) self.enc.encodeImage(self.img) def finish(self): if self.name == "": return try: self.enc.finish() except: pass
def _translation(output_png_path, rotation_x, rotation_y): buffered_image = _create_buffered_image(ImageIcon(output_png_path).getImage()) width, height = buffered_image.getWidth(), buffered_image.getHeight() buffered_image_matrix = [[buffered_image.getRGB(i, j) for j in xrange(height)] for i in xrange(width)] buffered_image_matrix = _transpose_matrix(buffered_image_matrix) m, n = len(buffered_image_matrix), len(buffered_image_matrix[0]) _log.info("Output path: {}".format(output_png_path)) start_x, start_y = 0, 0 end_x, end_y = n, m if start_x == 0 and end_x == 0 and start_y == 0 and end_y == 0: _log.info("ANTENNA-ERROR") return buffered_image dst_new_width = end_x dst_new_height = end_y # overlapping x enhancement if (rotation_x < end_x) and (rotation_x > 0): if end_x - rotation_x > end_x/2: dst_new_width = (end_x - rotation_x) * 2 start_x = dst_new_width/2 - rotation_x end_x = start_x + end_x elif end_x - rotation_x < end_x/2: end_x = 2*rotation_x dst_new_width = start_x + end_x # non-overlapping x enhancement elif rotation_x < 0: start_x = 2*abs(rotation_x) + end_x dst_new_width = 2*(abs(rotation_x) + end_x) end_x = start_x + end_x elif rotation_x >= end_x: dst_new_width = 2*rotation_x if (rotation_y < end_y) and (rotation_y > 0): if end_y - rotation_y > end_y/2: dst_new_height = (end_y - rotation_y) * 2 start_y = dst_new_height/2 - rotation_y end_y = start_y + end_y elif end_y - rotation_y < end_y/2: end_y = 2*rotation_y dst_new_height = start_y + end_y elif rotation_y < 0: start_y = 2*abs(rotation_y) + end_y dst_new_height = 2*(abs(rotation_y) + end_y) end_y = start_y + end_y elif rotation_y >= end_y: dst_new_height = 2*rotation_y new_buffered_image = BufferedImage(dst_new_width + 1, dst_new_height + 1, BufferedImage.TYPE_INT_ARGB) g2d = new_buffered_image.createGraphics() g2d.setComposite(AlphaComposite.Clear) g2d.fillRect(0, 0, dst_new_width, dst_new_height) for row_y in xrange(start_y, end_y + 1): for column_x in xrange(start_x, end_x + 1): if row_y - start_y < buffered_image.getHeight() and column_x - start_x < buffered_image.getWidth(): new_buffered_image.setRGB(column_x,row_y, buffered_image_matrix[row_y-start_y][column_x-start_x]) return new_buffered_image
from ij.process import ColorProcessor from java.awt.image import BufferedImage as BI from java.lang import Thread f = ImagePlus.getDeclaredField("listeners") f.setAccessible(True) listeners = f.get(None) imp = IJ.getImage() canvas = imp.getWindow().getCanvas() # Define range of slices to capture slices = xrange(1, imp.getNSlices() + 1) w, h = canvas.getWidth(), canvas.getHeight() capture = ImageStack(w, h) for i in slices: imp.setSlice(i) for l in listeners: l.imageUpdated(imp) Thread.sleep(50) # wait for repaints to happen, triggered by listeners, if any. bi = BI(w, h, BI.TYPE_INT_ARGB) g = bi.createGraphics() canvas.paint(g) g.dispose() capture.addSlice(ColorProcessor(bi)) bi.flush() ImagePlus("capture", capture).show()
def run(title): gd = GenericDialog("Record Window") gd.addMessage("Maximum number of frames to record.\nZero means infinite, interrupt with ESC key.") gd.addNumericField("Max. frames:", 50, 0) gd.addNumericField("Milisecond interval:", 300, 0) gd.addSlider("Start in (seconds):", 0, 20, 5) frames = [] titles = [] for f in Frame.getFrames(): if f.isEnabled() and f.isVisible(): frames.append(f) titles.append(f.getTitle()) gd.addChoice("Window:", titles, titles[0]) gd.addCheckbox("To file", False) gd.showDialog() if gd.wasCanceled(): return n_frames = int(gd.getNextNumber()) interval = gd.getNextNumber() / 1000.0 # in seconds frame = frames[gd.getNextChoiceIndex()] delay = int(gd.getNextNumber()) tofile = gd.getNextBoolean() dir = None if tofile: dc = DirectoryChooser("Directory to store image frames") dir = dc.getDirectory() if dir is None: return # dialog canceled snaps = [] borders = None executors = Executors.newFixedThreadPool(1) try: while delay > 0: IJ.showStatus("Starting in " + str(delay) + "s.") time.sleep(1) # one second delay -= 1 IJ.showStatus("Capturing frame borders...") bounds = frame.getBounds() robot = Robot() frame.toFront() time.sleep(0.5) # half a second borders = robot.createScreenCapture(bounds) IJ.showStatus("Recording " + frame.getTitle()) # Set box to the inside borders of the frame insets = frame.getInsets() box = bounds.clone() box.x = insets.left box.y = insets.top box.width -= insets.left + insets.right box.height -= insets.top + insets.bottom start = System.currentTimeMillis() / 1000.0 # in seconds last = start intervals = [] real_interval = 0 i = 1 fus = None if tofile: fus = [] # 0 n_frames means continuous acquisition while 0 == n_frames or (len(snaps) < n_frames and last - start < n_frames * interval): now = System.currentTimeMillis() / 1000.0 # in seconds real_interval = now - last if real_interval >= interval: last = now img = snapshot(frame, box) if tofile: fus.append(executors.submit(Saver(i, dir, bounds, borders, img, insets))) # will flush img i += 1 else: snaps.append(img) intervals.append(real_interval) else: time.sleep(interval / 5) # interrupt capturing: if IJ.escapePressed(): IJ.showStatus("Recording user-interrupted") break # debug: # print "insets:", insets # print "bounds:", bounds # print "box:", box # print "snap dimensions:", snaps[0].getWidth(), snaps[0].getHeight() # Create stack stack = None if tofile: for fu in snaps: fu.get() # wait on all stack = VirtualStack(bounds.width, bounds.height, None, dir) files = File(dir).list(TifFilter()) Arrays.sort(files) for f in files: stack.addSlice(f) else: stack = ImageStack(bounds.width, bounds.height, None) t = 0 for snap, real_interval in zip(snaps, intervals): bi = BufferedImage(bounds.width, bounds.height, BufferedImage.TYPE_INT_RGB) g = bi.createGraphics() g.drawImage(borders, 0, 0, None) g.drawImage(snap, insets.left, insets.top, None) stack.addSlice(str(IJ.d2s(t, 3)), ImagePlus("", bi).getProcessor()) t += real_interval snap.flush() bi.flush() borders.flush() ImagePlus(frame.getTitle() + " recording", stack).show() IJ.showStatus("Done recording " + frame.getTitle()) except Exception, e: print "Some error ocurred:" print e.printStackTrace() IJ.showStatus("") if borders is not None: borders.flush() for snap in snaps: snap.flush()
(graphOrderExported - 1) * (maxHeight + 22)) + 30 + minUsed + \ minDisplaced + minParasitic graphTopImported = ( (graphOrderImported - 1) * (maxHeight + 22)) + 30 + minUsed + \ minDisplaced + minParasitic graphTopGenerated = ( (graphOrderGenerated - 1) * (maxHeight + 22)) + 30 + \ minUsed + minDisplaced graphTopUsed = ((graphOrderUsed - 1) * (maxHeight + 22)) + 30 graphTopDisplaced = ( (graphOrderDisplaced - 1) * (maxHeight + 22)) + 30 + minUsed image = BufferedImage( graphLeft + len(resultData) + 100, ((maxHeight + 22) * 5) + 60 + minUsed + minDisplaced + minParasitic, BufferedImage.TYPE_4BYTE_ABGR) graphics = image.createGraphics() defaultFont = graphics.getFont() smallFont = Font(defaultFont.getName(), defaultFont.getStyle(), 10) keyFont = Font(defaultFont.getName(), defaultFont.getStyle(), 9) xAxisExported = int( graphTopExported + maxOverallScale * scaleFactorOverall) xAxisImported = int( graphTopImported + maxOverallScale * scaleFactorOverall) xAxisGenerated = int( graphTopGenerated + maxOverallScale * scaleFactorOverall) xAxisUsed = int( graphTopUsed + maxOverallScale * scaleFactorOverall) xAxisDisplaced = int( graphTopDisplaced + maxOverallScale * scaleFactorOverall) monthPoints = [] for i, dataHh in enumerate(resultData):
def resize_image(original_image, width, height): resized_image = BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB) g = resized_image.createGraphics() g.drawImage(original_image, 0, 0, width, height, None) g.dispose(); return resized_image
from java.io import File # :/ I don't really like this here. import scoreState from scoreState import * # I MADE IT WORSE! THIS IMPLICITLY IMPORTS ALL THE OTHER STUFF! I'M A HORRIBLE PERSON! D: IMAGE_DIR = './images/orig/' PIECES = ('E', 'M', 'H', 'D', 'C', 'R', 'e', 'm', 'h', 'd', 'c', 'r') IMAGES = ('GoldElephant.gif', 'GoldCamel.gif', 'GoldHorse.gif', 'GoldDog.gif', 'GoldCat.gif', 'GoldRabbit.gif', \ 'SilverElephant.gif', 'SilverCamel.gif', 'SilverHorse.gif', 'SilverDog.gif', 'SilverCat.gif', 'SilverRabbit.gif') PIECE_IMAGE = dict(zip(PIECES, IMAGES)) for piece, image_file in PIECE_IMAGE.iteritems(): image = ImageIO.read(File(IMAGE_DIR + image_file)) resized_image = BufferedImage(50, 50, BufferedImage.TYPE_INT_ARGB) g = resized_image.createGraphics() g.drawImage(image, 0, 0, 50, 50, 0, 0, image.width, image.height, None) g.dispose() PIECE_IMAGE[piece] = ImageIcon(resized_image) PIECE_IMAGE[None] = None #TODO - fix this mess! show_colored should be moved out of here, I think. # This module should only have helpers like make_board_panel and maybe some # classes for different view thingies. def make_board_panel(board, content_maker, colorizer): panel = JPanel(GridLayout(8, 8)) for i in range(8, 0, -1): for j in range(8): panel.add(content_maker(board[i - 1][j], i - 1, j, colorizer))
def aquaNode(text,fSize): vWidth = 300 vHeight = 100 BLUR = array([0.10, 0.10, 0.10, 0.10, 0.30, 0.10, 0.10, 0.10, 0.10],'f') inset = 10 buttonColor = Color.BLUE.brighter().brighter().brighter() foregroundColor = Color(1,1,1,0.6) toRet = BufferedImage(vWidth, vHeight, BufferedImage.TYPE_INT_RGB) g2 = toRet.createGraphics() testFont = g2.getFont().deriveFont(Font.BOLD,fSize) fontMetrics = Toolkit.getDefaultToolkit().getFontMetrics(testFont); vWidth = Math.max(100,Math.round(fontMetrics.stringWidth(text) * 1.5)) vHeight = Math.max(30,Math.round((fontMetrics.getHeight() + fontMetrics.getAscent())*1.5)) toRet = BufferedImage(vWidth, vHeight, BufferedImage.TYPE_INT_RGB) g2 = toRet.createGraphics() g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON) vBuffer = BufferedImage(vWidth, vHeight, BufferedImage.TYPE_INT_RGB) bg = vBuffer.createGraphics() bg.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON) vButtonHeight = vHeight - (inset * 2); vButtonWidth = vWidth - (inset * 2); vArcSize = vButtonHeight; bg.setColor(getDisplayBackground()); bg.fillRect(0, 0, vWidth, vHeight); vGradientStartColor = buttonColor.darker().darker().darker(); vGradientEndColor = buttonColor.brighter().brighter().brighter(); vPaint = GradientPaint(0, inset, vGradientStartColor, 0, vButtonHeight, vGradientEndColor, false); bg.setPaint(vPaint); bg.fillRoundRect(inset, inset, vButtonWidth, vButtonHeight, vArcSize, vArcSize); vHighlightInset = 2; vButtonHighlightHeight = vButtonHeight - (vHighlightInset * 2); vButtonHighlightWidth = vButtonWidth - (vHighlightInset * 2); vHighlightArcSize = vButtonHighlightHeight; vGradientStartColor = Color.WHITE; vGradientEndColor = buttonColor.brighter(); vPaint = GradientPaint(0,inset+vHighlightInset,vGradientStartColor,0,inset+vHighlightInset+(vButtonHighlightHeight/2), buttonColor.brighter(), false); bg.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,.8)); bg.setPaint(vPaint); bg.setClip(RoundRectangle2D.Float(inset+vHighlightInset,inset+vHighlightInset,vButtonHighlightWidth,vButtonHighlightHeight / 2,vButtonHighlightHeight / 3,vButtonHighlightHeight /3)); bg.fillRoundRect(inset+vHighlightInset,inset+vHighlightInset,vButtonHighlightWidth,vButtonHighlightHeight,vHighlightArcSize,vHighlightArcSize); vBlurOp = ConvolveOp(Kernel(3, 3, BLUR)); vBlurredBase = vBlurOp.filter(vBuffer, None); g2.drawImage(vBlurredBase, 0, 0, None); g2.setColor(foregroundColor); g2.setFont(testFont); vMetrics = g2.getFontMetrics(); vStringBounds = vMetrics.getStringBounds(text,g2); xt = ((vWidth / 2) - (vStringBounds.getWidth() / 2)); yt = ((vHeight / 2) + (vStringBounds.getHeight() / 2)) - vMetrics.getDescent(); g2.drawString(text,xt,yt); toRet = toRet.getSubimage(inset,inset,vButtonHighlightWidth+inset/2,vButtonHighlightHeight+inset/2); return toRet
def _translation(output_png_path, rotation_x, rotation_y): buffered_image = _create_buffered_image(ImageIcon(output_png_path).getImage()) width, height = buffered_image.getWidth(), buffered_image.getHeight() buffered_image_matrix = [[buffered_image.getRGB(i, j) for j in xrange(height)] for i in xrange(width)] buffered_image_matrix = _transpose_matrix(buffered_image_matrix) m, n = len(buffered_image_matrix), len(buffered_image_matrix[0]) ''' x_coords_list, y_coords_list = [], [] for y in xrange(m): for x in xrange(n): pixel = buffered_image_matrix[y][x] if (pixel >> 24) != 0x00: x_coords_list.append(x) y_coords_list.append(y) ''' _log.info("Output path: {}".format(output_png_path)) #_log.info("height, width: ({}, {})".format(m, n)) # start_x = min(x_coords_list) if len(x_coords_list) > 0 else 0 # end_x = max(x_coords_list) if len(x_coords_list) > 0 else 0 # start_y = min(y_coords_list) if len(y_coords_list) > 0 else 0 # end_y = max(y_coords_list) if len(y_coords_list) > 0 else 0 start_x, start_y = 0, 0 end_x, end_y = n, m if start_x == 0 and end_x == 0 and start_y == 0 and end_y == 0: _log.info("ANTENNA-ERROR") return buffered_image #_log.info("start y, start x: ({}, {})".format(start_y, start_x)) #_log.info("end y, end x: ({}, {})".format(end_y, end_x)) # if start_x > rotation_x: # start_x = rotation_x # if end_x < rotation_x: # end_x = rotation_x # if start_y > rotation_y: # start_y = rotation_y # if end_y < rotation_y: # end_y = rotation_y #org_st_x = start_x #org_st_y = start_y dst_new_width = end_x dst_new_height = end_y # overlapping x enhancement if (rotation_x < end_x) and (rotation_x > 0): #_log.info("x overlap") if end_x - rotation_x > end_x/2: dst_new_width = (end_x - rotation_x) * 2 start_x = dst_new_width/2 - rotation_x end_x = start_x + end_x elif end_x - rotation_x < end_x/2: end_x = 2*rotation_x dst_new_width = start_x + end_x # non-overlapping x enhancement elif rotation_x < 0: #_log.info("2nd quadrant x rotation") start_x = 2*abs(rotation_x) + end_x dst_new_width = 2*(abs(rotation_x) + end_x) #_log.info("({})".format(dst_new_width)) end_x = start_x + end_x elif rotation_x >= end_x: #_log.info("huge x rotation") dst_new_width = 2*rotation_x #+ 2*org_st_x if (rotation_y < end_y) and (rotation_y > 0): #_log.info("y overlap") if end_y - rotation_y > end_y/2: dst_new_height = (end_y - rotation_y) * 2 start_y = dst_new_height/2 - rotation_y end_y = start_y + end_y elif end_y - rotation_y < end_y/2: end_y = 2*rotation_y dst_new_height = start_y + end_y elif rotation_y < 0: #_log.info("4th quadrant y rotation") start_y = 2*abs(rotation_y) + end_y dst_new_height = 2*(abs(rotation_y) + end_y) end_y = start_y + end_y elif rotation_y >= end_y: #_log.info("huge y rotation") dst_new_height = 2*rotation_y #+ 2*org_st_y #_log.info("start y, start x: ({}, {})".format(start_y, start_x)) #_log.info("end y, end x: ({}, {})".format(end_y, end_x)) #_log.info("dwidth, dheight: ({}, {})".format(dst_new_width, dst_new_height)) #_log.info("-" * 80) #new_buffered_image = BufferedImage(dst_new_width + org_st_x + 1, dst_new_height + org_st_y + 1, BufferedImage.TYPE_INT_ARGB) new_buffered_image = BufferedImage(dst_new_width + 1, dst_new_height + 1, BufferedImage.TYPE_INT_ARGB) g2d = new_buffered_image.createGraphics() g2d.setComposite(AlphaComposite.Clear) g2d.fillRect(0, 0, dst_new_width, dst_new_height) #try to assemble image for row_y in xrange(start_y, end_y + 1): for column_x in xrange(start_x, end_x + 1): if row_y - start_y < buffered_image.getHeight() and column_x - start_x < buffered_image.getWidth(): new_buffered_image.setRGB(column_x,row_y, buffered_image_matrix[row_y-start_y][column_x-start_x]) #rgb = java.awt.Color(255,20,147) #new_buffered_image.setRGB(dst_new_width/2, dst_new_height/2, rgb.getRGB()) return new_buffered_image
def run(title): gd = GenericDialog('Record Window') gd.addMessage( "Maximum number of frames to record.\nZero means infinite, interrupt with ESC key." ) gd.addNumericField('Max. frames:', 50, 0) gd.addNumericField('Milisecond interval:', 300, 0) gd.addSlider('Start in (seconds):', 0, 20, 5) frames = [] titles = [] for f in Frame.getFrames(): if f.isEnabled() and f.isVisible(): frames.append(f) titles.append(f.getTitle()) gd.addChoice('Window:', titles, titles[0]) gd.addCheckbox("To file", False) gd.showDialog() if gd.wasCanceled(): return n_frames = int(gd.getNextNumber()) interval = gd.getNextNumber() / 1000.0 # in seconds frame = frames[gd.getNextChoiceIndex()] delay = int(gd.getNextNumber()) tofile = gd.getNextBoolean() dir = None if tofile: dc = DirectoryChooser("Directory to store image frames") dir = dc.getDirectory() if dir is None: return # dialog canceled snaps = [] borders = None executors = Executors.newFixedThreadPool(1) try: while delay > 0: IJ.showStatus('Starting in ' + str(delay) + 's.') time.sleep(1) # one second delay -= 1 IJ.showStatus('Capturing frame borders...') bounds = frame.getBounds() robot = Robot() frame.toFront() time.sleep(0.5) # half a second borders = robot.createScreenCapture(bounds) IJ.showStatus("Recording " + frame.getTitle()) # Set box to the inside borders of the frame insets = frame.getInsets() box = bounds.clone() box.x = insets.left box.y = insets.top box.width -= insets.left + insets.right box.height -= insets.top + insets.bottom start = System.currentTimeMillis() / 1000.0 # in seconds last = start intervals = [] real_interval = 0 i = 1 fus = None if tofile: fus = [] # 0 n_frames means continuous acquisition while 0 == n_frames or (len(snaps) < n_frames and last - start < n_frames * interval): now = System.currentTimeMillis() / 1000.0 # in seconds real_interval = now - last if real_interval >= interval: last = now img = snapshot(frame, box) if tofile: fus.append( executors.submit( Saver(i, dir, bounds, borders, img, insets))) # will flush img i += 1 else: snaps.append(img) intervals.append(real_interval) else: time.sleep(interval / 5) # interrupt capturing: if IJ.escapePressed(): IJ.showStatus("Recording user-interrupted") break # debug: #print "insets:", insets #print "bounds:", bounds #print "box:", box #print "snap dimensions:", snaps[0].getWidth(), snaps[0].getHeight() # Create stack stack = None if tofile: for fu in snaps: fu.get() # wait on all stack = VirtualStack(bounds.width, bounds.height, None, dir) files = File(dir).list(TifFilter()) Arrays.sort(files) for f in files: stack.addSlice(f) else: stack = ImageStack(bounds.width, bounds.height, None) t = 0 for snap, real_interval in zip(snaps, intervals): bi = BufferedImage(bounds.width, bounds.height, BufferedImage.TYPE_INT_RGB) g = bi.createGraphics() g.drawImage(borders, 0, 0, None) g.drawImage(snap, insets.left, insets.top, None) stack.addSlice(str(IJ.d2s(t, 3)), ImagePlus('', bi).getProcessor()) t += real_interval snap.flush() bi.flush() borders.flush() ImagePlus(frame.getTitle() + " recording", stack).show() IJ.showStatus('Done recording ' + frame.getTitle()) except Exception, e: print "Some error ocurred:" print e.printStackTrace() IJ.showStatus('') if borders is not None: borders.flush() for snap in snaps: snap.flush()
def aquaNode(text, fSize): vWidth = 300 vHeight = 100 BLUR = array([0.10, 0.10, 0.10, 0.10, 0.30, 0.10, 0.10, 0.10, 0.10], 'f') inset = 10 buttonColor = Color.BLUE.brighter().brighter().brighter() foregroundColor = Color(1, 1, 1, 0.6) toRet = BufferedImage(vWidth, vHeight, BufferedImage.TYPE_INT_RGB) g2 = toRet.createGraphics() testFont = g2.getFont().deriveFont(Font.BOLD, fSize) fontMetrics = Toolkit.getDefaultToolkit().getFontMetrics(testFont) vWidth = Math.max(100, Math.round(fontMetrics.stringWidth(text) * 1.5)) vHeight = Math.max( 30, Math.round((fontMetrics.getHeight() + fontMetrics.getAscent()) * 1.5)) toRet = BufferedImage(vWidth, vHeight, BufferedImage.TYPE_INT_RGB) g2 = toRet.createGraphics() g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON) vBuffer = BufferedImage(vWidth, vHeight, BufferedImage.TYPE_INT_RGB) bg = vBuffer.createGraphics() bg.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON) vButtonHeight = vHeight - (inset * 2) vButtonWidth = vWidth - (inset * 2) vArcSize = vButtonHeight bg.setColor(getDisplayBackground()) bg.fillRect(0, 0, vWidth, vHeight) vGradientStartColor = buttonColor.darker().darker().darker() vGradientEndColor = buttonColor.brighter().brighter().brighter() vPaint = GradientPaint(0, inset, vGradientStartColor, 0, vButtonHeight, vGradientEndColor, false) bg.setPaint(vPaint) bg.fillRoundRect(inset, inset, vButtonWidth, vButtonHeight, vArcSize, vArcSize) vHighlightInset = 2 vButtonHighlightHeight = vButtonHeight - (vHighlightInset * 2) vButtonHighlightWidth = vButtonWidth - (vHighlightInset * 2) vHighlightArcSize = vButtonHighlightHeight vGradientStartColor = Color.WHITE vGradientEndColor = buttonColor.brighter() vPaint = GradientPaint( 0, inset + vHighlightInset, vGradientStartColor, 0, inset + vHighlightInset + (vButtonHighlightHeight / 2), buttonColor.brighter(), false) bg.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .8)) bg.setPaint(vPaint) bg.setClip( RoundRectangle2D.Float(inset + vHighlightInset, inset + vHighlightInset, vButtonHighlightWidth, vButtonHighlightHeight / 2, vButtonHighlightHeight / 3, vButtonHighlightHeight / 3)) bg.fillRoundRect(inset + vHighlightInset, inset + vHighlightInset, vButtonHighlightWidth, vButtonHighlightHeight, vHighlightArcSize, vHighlightArcSize) vBlurOp = ConvolveOp(Kernel(3, 3, BLUR)) vBlurredBase = vBlurOp.filter(vBuffer, None) g2.drawImage(vBlurredBase, 0, 0, None) g2.setColor(foregroundColor) g2.setFont(testFont) vMetrics = g2.getFontMetrics() vStringBounds = vMetrics.getStringBounds(text, g2) xt = ((vWidth / 2) - (vStringBounds.getWidth() / 2)) yt = ((vHeight / 2) + (vStringBounds.getHeight() / 2)) - vMetrics.getDescent() g2.drawString(text, xt, yt) toRet = toRet.getSubimage(inset, inset, vButtonHighlightWidth + inset / 2, vButtonHighlightHeight + inset / 2) return toRet
def _translation(output_png_path, rotation_x, rotation_y): buffered_image = _create_buffered_image(ImageIcon(output_png_path).getImage()) width, height = buffered_image.getWidth(), buffered_image.getHeight() buffered_image_matrix = [[buffered_image.getRGB(i, j) for j in xrange(height)] for i in xrange(width)] buffered_image_matrix = _transpose_matrix(buffered_image_matrix) m, n = len(buffered_image_matrix), len(buffered_image_matrix[0]) _log.info("Output path: {}".format(output_png_path)) start_x, start_y = 0, 0 end_x, end_y = n, m if start_x == 0 and end_x == 0 and start_y == 0 and end_y == 0: _log.info("ANTENNA-ERROR") return buffered_image dst_new_width = end_x dst_new_height = end_y # overlapping x enhancement if (rotation_x < end_x) and (rotation_x > 0): if end_x - rotation_x > end_x/2: dst_new_width = (end_x - rotation_x) * 2 start_x = dst_new_width/2 - rotation_x end_x = start_x + end_x elif end_x - rotation_x < end_x/2: end_x = 2*rotation_x dst_new_width = start_x + end_x # non-overlapping x enhancement elif rotation_x < 0: start_x = 2*abs(rotation_x) + end_x dst_new_width = 2*(abs(rotation_x) + end_x) end_x = start_x + end_x elif rotation_x >= end_x: dst_new_width = 2*rotation_x if (rotation_y < end_y) and (rotation_y > 0): if end_y - rotation_y > end_y/2: dst_new_height = (end_y - rotation_y) * 2 start_y = dst_new_height/2 - rotation_y end_y = start_y + end_y elif end_y - rotation_y < end_y/2: end_y = 2*rotation_y dst_new_height = start_y + end_y elif rotation_y < 0: start_y = 2*abs(rotation_y) + end_y dst_new_height = 2*(abs(rotation_y) + end_y) end_y = start_y + end_y elif rotation_y >= end_y: dst_new_height = 2*rotation_y new_buffered_image = BufferedImage(int(dst_new_width + 1), int(dst_new_height + 1), BufferedImage.TYPE_INT_ARGB) g2d = new_buffered_image.createGraphics() g2d.setComposite(AlphaComposite.Clear) g2d.fillRect(0, 0, int(dst_new_width + 1), int(dst_new_height + 1)) start_x = int(start_x) start_y = int(start_y) end_x = int(end_x) end_y = int(end_y) for row_y in xrange(start_y, end_y + 1): for column_x in xrange(start_x, end_x + 1): if row_y - start_y < buffered_image.getHeight() and column_x - start_x < buffered_image.getWidth(): new_buffered_image.setRGB(column_x,row_y, buffered_image_matrix[row_y-start_y][column_x-start_x]) return new_buffered_image
# :/ I don't really like this here. import scoreState from scoreState import * # I MADE IT WORSE! THIS IMPLICITLY IMPORTS ALL THE OTHER STUFF! I'M A HORRIBLE PERSON! D: IMAGE_DIR = './images/orig/' PIECES = ('E', 'M', 'H', 'D', 'C', 'R', 'e', 'm', 'h', 'd', 'c', 'r') IMAGES = ('GoldElephant.gif', 'GoldCamel.gif', 'GoldHorse.gif', 'GoldDog.gif', 'GoldCat.gif', 'GoldRabbit.gif', \ 'SilverElephant.gif', 'SilverCamel.gif', 'SilverHorse.gif', 'SilverDog.gif', 'SilverCat.gif', 'SilverRabbit.gif') PIECE_IMAGE = dict(zip(PIECES, IMAGES)) for piece, image_file in PIECE_IMAGE.iteritems(): image = ImageIO.read(File(IMAGE_DIR + image_file)) resized_image = BufferedImage(50, 50, BufferedImage.TYPE_INT_ARGB) g = resized_image.createGraphics() g.drawImage(image, 0, 0, 50, 50, 0, 0, image.width, image.height, None) g.dispose() PIECE_IMAGE[piece] = ImageIcon(resized_image) PIECE_IMAGE[None] = None #TODO - fix this mess! show_colored should be moved out of here, I think. # This module should only have helpers like make_board_panel and maybe some # classes for different view thingies. def make_board_panel(board, content_maker, colorizer): panel = JPanel(GridLayout(8, 8)) for i in range(8, 0, -1): for j in range(8):
def get_font_metrics(font_name, font_size): from java.awt.image import BufferedImage from java.awt import Font tmp_img = BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB) g = tmp_img.createGraphics() return g.getFontMetrics((Font(font_name, Font.PLAIN, int(font_size))))
def renderMap(self, connection_parameters=None, sql=None, geom_id_entity=None, geom_entity=None, data_entity=None, map_parameters={}): # Put connection parameters into a java HashMap. params_hashmap = HashMap() for param, value in connection_parameters.items(): if value: params_hashmap.put(param, value) # Get data store. data_store = DataStoreFinder.getDataStore(params_hashmap) # Create VirtualTable from sql. vtable = VirtualTable("vtable", sql) # Set primary key. vtable.setPrimaryKeyColumns([geom_id_entity['ID']]) # metadatata = intententional typo. GT needs to fix the name. vtable.addGeometryMetadatata(geom_entity['ID'], JPolygon, 4326) # Create feature source from virtual table. data_store.addVirtualTable(vtable) feature_source = data_store.getFeatureSource("vtable") # Add styling classes if there was a value entity. if data_entity: # Generate class bounds. num_classes = data_entity.get('num_classes', 25) vmin = float(data_entity.get('min', 0)) vmax = float(data_entity.get('max', 1)) vrange = vmax - vmin class_width = vrange/num_classes classes = [(None, vmin)] for i in range(num_classes): classes.append((vmin + i * class_width, vmin + (i + 1) * class_width)) classes.append((vmax, None)) # Generate style rules for classes. rules = [] for c in classes: rule = self.create_rule(c[0], c[1], vmin, vrange, attr=data_entity['ID']) rules.append(rule) feature_type_style = self.style_factory.createFeatureTypeStyle(rules) style = self.style_factory.createStyle() style.featureTypeStyles().add(feature_type_style) else: style = None # Setup map. gt_map = DefaultMapContext() gt_map.addLayer(feature_source, style) gt_renderer = StreamingRenderer() gt_renderer.setMapContent(gt_map) image_bounds = Rectangle(0, 0, map_parameters.get('WIDTH', 100), map_parameters.get('HEIGHT', 100)) # Set image type based on format. image_format = map_parameters.get('FORMAT', 'image/png') if image_format == 'image/jpeg': image_type = BufferedImage.TYPE_INT_RGB else: image_type = BufferedImage.TYPE_INT_ARGB buffered_image = BufferedImage(image_bounds.width, image_bounds.height, image_type) graphics = buffered_image.createGraphics() # Set background color if not transparent. if not map_parameters.get('TRANSPARENT'): graphics.setPaint(Color.WHITE) graphics.fill(image_bounds) crs = CRS.decode(map_parameters.get('SRS', "EPSG:4326")) bbox = map_parameters.get('BBOX', '-180,-90,180,90') coords = [float(coord) for coord in bbox.split(",")] map_bounds = ReferencedEnvelope(coords[0], coords[2], coords[1], coords[3], crs) gt_renderer.paint(graphics, image_bounds, map_bounds) # Release the JDBC connection and map content. data_store.dispose() gt_renderer.getMapContent().dispose() # Return raw image. byte_array_output_stream = ByteArrayOutputStream() informal_format = re.match('image/(.*)', image_format).group(1) ImageIO.write(buffered_image, informal_format, byte_array_output_stream) byte_array = byte_array_output_stream.toByteArray() raw_image = Py.newString(StringUtil.fromBytes(byte_array)) return raw_image
def _translation(output_png_path, rotation_x, rotation_y): buffered_image = _create_buffered_image( ImageIcon(output_png_path).getImage()) width, height = buffered_image.getWidth(), buffered_image.getHeight() buffered_image_matrix = [[ buffered_image.getRGB(i, j) for j in xrange(height) ] for i in xrange(width)] buffered_image_matrix = _transpose_matrix(buffered_image_matrix) m, n = len(buffered_image_matrix), len(buffered_image_matrix[0]) ''' x_coords_list, y_coords_list = [], [] for y in xrange(m): for x in xrange(n): pixel = buffered_image_matrix[y][x] if (pixel >> 24) != 0x00: x_coords_list.append(x) y_coords_list.append(y) ''' _log.info("Output path: {}".format(output_png_path)) #_log.info("height, width: ({}, {})".format(m, n)) # start_x = min(x_coords_list) if len(x_coords_list) > 0 else 0 # end_x = max(x_coords_list) if len(x_coords_list) > 0 else 0 # start_y = min(y_coords_list) if len(y_coords_list) > 0 else 0 # end_y = max(y_coords_list) if len(y_coords_list) > 0 else 0 start_x, start_y = 0, 0 end_x, end_y = n, m if start_x == 0 and end_x == 0 and start_y == 0 and end_y == 0: _log.info("ANTENNA-ERROR") return buffered_image #_log.info("start y, start x: ({}, {})".format(start_y, start_x)) #_log.info("end y, end x: ({}, {})".format(end_y, end_x)) # if start_x > rotation_x: # start_x = rotation_x # if end_x < rotation_x: # end_x = rotation_x # if start_y > rotation_y: # start_y = rotation_y # if end_y < rotation_y: # end_y = rotation_y #org_st_x = start_x #org_st_y = start_y dst_new_width = end_x dst_new_height = end_y # overlapping x enhancement if (rotation_x < end_x) and (rotation_x > 0): #_log.info("x overlap") if end_x - rotation_x > end_x / 2: dst_new_width = (end_x - rotation_x) * 2 start_x = dst_new_width / 2 - rotation_x end_x = start_x + end_x elif end_x - rotation_x < end_x / 2: end_x = 2 * rotation_x dst_new_width = start_x + end_x # non-overlapping x enhancement elif rotation_x < 0: #_log.info("2nd quadrant x rotation") start_x = 2 * abs(rotation_x) + end_x dst_new_width = 2 * (abs(rotation_x) + end_x) #_log.info("({})".format(dst_new_width)) end_x = start_x + end_x elif rotation_x >= end_x: #_log.info("huge x rotation") dst_new_width = 2 * rotation_x #+ 2*org_st_x if (rotation_y < end_y) and (rotation_y > 0): #_log.info("y overlap") if end_y - rotation_y > end_y / 2: dst_new_height = (end_y - rotation_y) * 2 start_y = dst_new_height / 2 - rotation_y end_y = start_y + end_y elif end_y - rotation_y < end_y / 2: end_y = 2 * rotation_y dst_new_height = start_y + end_y elif rotation_y < 0: #_log.info("4th quadrant y rotation") start_y = 2 * abs(rotation_y) + end_y dst_new_height = 2 * (abs(rotation_y) + end_y) end_y = start_y + end_y elif rotation_y >= end_y: #_log.info("huge y rotation") dst_new_height = 2 * rotation_y #+ 2*org_st_y #_log.info("start y, start x: ({}, {})".format(start_y, start_x)) #_log.info("end y, end x: ({}, {})".format(end_y, end_x)) #_log.info("dwidth, dheight: ({}, {})".format(dst_new_width, dst_new_height)) #_log.info("-" * 80) #new_buffered_image = BufferedImage(dst_new_width + org_st_x + 1, dst_new_height + org_st_y + 1, BufferedImage.TYPE_INT_ARGB) new_buffered_image = BufferedImage(dst_new_width + 1, dst_new_height + 1, BufferedImage.TYPE_INT_ARGB) g2d = new_buffered_image.createGraphics() g2d.setComposite(AlphaComposite.Clear) g2d.fillRect(0, 0, dst_new_width, dst_new_height) #try to assemble image for row_y in xrange(start_y, end_y + 1): for column_x in xrange(start_x, end_x + 1): if row_y - start_y < buffered_image.getHeight( ) and column_x - start_x < buffered_image.getWidth(): new_buffered_image.setRGB( column_x, row_y, buffered_image_matrix[row_y - start_y][column_x - start_x]) #rgb = java.awt.Color(255,20,147) #new_buffered_image.setRGB(dst_new_width/2, dst_new_height/2, rgb.getRGB()) return new_buffered_image
def _translation(output_png_path, rotation_x, rotation_y): buffered_image = _create_buffered_image(ImageIcon(output_png_path).getImage()) #buffered_image = ImageIO.read(new File()); width, height = buffered_image.getWidth(), buffered_image.getHeight() buffered_image_matrix = [[buffered_image.getRGB(i, j) for j in xrange(height)] for i in xrange(width)] buffered_image_matrix = _transpose_matrix(buffered_image_matrix) x_coords_list, y_coords_list = [], [] m, n = len(buffered_image_matrix), len(buffered_image_matrix[0]) for y in xrange(m): for x in xrange(n): pixel = buffered_image_matrix[y][x] if (pixel >> 24) != 0x00: x_coords_list.append(x) y_coords_list.append(y) _log.info("-" * 80) _log.info("Output path: {}".format(output_png_path)) _log.info("height, weight: ({}, {})".format(m, n)) start_x = min(x_coords_list) if len(x_coords_list) > 0 else 0 end_x = max(x_coords_list) if len(x_coords_list) > 0 else 0 start_y = min(y_coords_list) if len(y_coords_list) > 0 else 0 end_y = max(y_coords_list) if len(y_coords_list) > 0 else 0 _log.info("end y, end x: ({}, {})".format(end_y, end_x)) if start_x > rotation_x: start_x = rotation_x if end_x < rotation_x: end_x = rotation_x if start_y > rotation_y: start_y = rotation_y if end_y < rotation_y: end_y = rotation_y _log.info("end y, end x: ({}, {})".format(end_y, end_x)) _log.info("-" * 80) dst_new_width = end_x * 2 dst_new_height = end_y * 2 new_buffered_image = BufferedImage(dst_new_width, dst_new_height,BufferedImage.TYPE_INT_ARGB) g2d = new_buffered_image.createGraphics() g2d.setComposite(AlphaComposite.Clear) g2d.fillRect(0, 0, dst_new_width, dst_new_height) # Bottom Right for old_row_y, new_row_y in zip(xrange(rotation_y, end_y + 1),xrange(end_y, dst_new_height)): for old_column_x, new_column_x in zip(xrange(rotation_x, end_x + 1),xrange(end_x, dst_new_width)): if(old_row_y >= 0 and old_column_x >= 0 and old_row_y < buffered_image_matrix.length and old_column_x < buffered_image_matrix[old_row_y].length): new_buffered_image.setRGB(new_column_x,new_row_y, buffered_image_matrix[old_row_y][old_column_x]); # Upper Right for old_row_y, new_row_y in zip(xrange(rotation_y, start_y - 1, -1),xrange(end_y, -1, -1)): for old_column_x, new_column_x in zip(xrange(rotation_x, end_x + 1),xrange(end_x, dst_new_width)): if(old_row_y >= 0 and old_column_x >= 0 and old_row_y < buffered_image_matrix.length and old_column_x < buffered_image_matrix[old_row_y].length): new_buffered_image.setRGB(new_column_x,new_row_y, buffered_image_matrix[old_row_y][old_column_x]) # Upper Left for old_row_y, new_row_y in zip(xrange(rotation_y, start_y - 1, -1),xrange(end_y, -1, -1)): for old_column_x, new_column_x in zip(xrange(rotation_x, start_x - 1, -1),xrange(end_x, -1, -1)): if(old_row_y >= 0 and old_column_x >= 0 and old_row_y < buffered_image_matrix.length and old_column_x < buffered_image_matrix[old_row_y].length): new_buffered_image.setRGB(new_column_x,new_row_y, buffered_image_matrix[old_row_y][old_column_x]) # Bottom Left for old_row_y, new_row_y in zip(xrange(rotation_y, end_y + 1),xrange(end_y, dst_new_height)): for old_column_x, new_column_x in zip(xrange(rotation_x, start_x - 1, -1),xrange(end_x, -1, -1)): if(old_row_y >= 0 and old_column_x >= 0 and old_row_y < buffered_image_matrix.length and old_column_x < buffered_image_matrix[old_row_y].length): new_buffered_image.setRGB(new_column_x,new_row_y, buffered_image_matrix[old_row_y][old_column_x]) #color = Color.yellow #new_buffered_image.setRGB(end_x - 1, end_y - 1, color.getRGB()) return new_buffered_image