Exemple #1
0
 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)
Exemple #2
0
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
Exemple #3
0
 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]))
Exemple #4
0
    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]))
Exemple #5
0
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))))
Exemple #6
0
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
Exemple #8
0
 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;
Exemple #9
0
 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)
Exemple #10
0
    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
Exemple #12
0
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));
Exemple #14
0
    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)
Exemple #15
0
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));
Exemple #18
0
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
Exemple #19
0
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))
Exemple #20
0
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
Exemple #21
0
	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()
Exemple #22
0
    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
Exemple #23
0
 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()
Exemple #24
0
 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)
Exemple #25
0
    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
Exemple #26
0
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;
Exemple #27
0
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
Exemple #29
0
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()
Exemple #30
0
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()
Exemple #31
0
     (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):
Exemple #32
0
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
Exemple #33
0
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))
Exemple #34
0
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
Exemple #35
0
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()
Exemple #37
0
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
Exemple #39
0
# :/ 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):
Exemple #40
0
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))))
Exemple #41
0
    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
Exemple #42
0
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