Пример #1
0
def generate_image(width, height):
    renderer = StaticRenderer()
    renderer.setTree(GVTBuilder().build(context, document))
    transform = AffineTransform()
    transform.translate(-svg_x, -svg_y)
    transform.scale(width / svg_width, height / svg_height)
    renderer.setTransform(transform)
    renderer.updateOffScreen(width, height)
    renderer.repaint(Rectangle(0, 0, width, height))
    return renderer.getOffScreen()
Пример #2
0
def generate_image(width, height):
	renderer = StaticRenderer()
	renderer.setTree(GVTBuilder().build(context, document))
	transform = AffineTransform()
	transform.translate(-svg_x, -svg_y)
	transform.scale(width / svg_width, height / svg_height)
	renderer.setTransform(transform)
	renderer.updateOffScreen(width, height)
	renderer.repaint(Rectangle(0, 0, width, height))
	return renderer.getOffScreen()
def add_text_to_image(editable_image, text, font, color, x, y, size=10.0, text_width=None, text_height=None):

    assert isinstance(editable_image, BufferedImage), "No *editable* image (instance of ImageIO) given!"
    assert len(text) > 0, "No or empty text given..."
    assert isinstance(font, Font), "No valid font given! Should be instance of java.awt.Font!"
    assert isinstance(color, Color), "No valid color given! Should be instance of java.awt.Color!"
    assert isinstance(x, float), "No valid number given! Should be a float value"
    assert isinstance(y, float), "No valid number given! Should be a float value"

    assert width is None or isinstance(width, float)
    assert height is None or isinstance(height, float)

    text = text.replace("\r", "\n")
    print text

    g = editable_image.getGraphics()
    g.setFont(font)
    g.setColor(color)
    # in case no stretchin
    if (text_width and text_height) is None:
        g.drawString(text, x, y)
        g.dispose()
        return editable_image

    g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON)
    stretch = AffineTransform()
    color_tmp = Color(0, 0, 1, 0.0)
    g.setColor(color_tmp)
    g.drawString(text, x, y)
    g.setColor(color)
    # note first string is only made to get text width of g
    # TODO if possible remove first text string

    original_text_width = g.getFontMetrics(font).stringWidth(text)
    original_text_height = g.getFontMetrics(font).getHeight()
    assert isinstance(original_text_height, int)
    assert isinstance(original_text_width, int)
    # print(original_text_width)
    # print(original_text_height)

    if text_width is None:
        text_width = original_text_width
    if text_height is None:
        text_height = original_text_height

    factor_x = float(text_width) / original_text_width
    factor_y = float(text_height) / original_text_height
    stretch.scale(factor_x, factor_y)
    g.setTransform(stretch)
    g.drawString(text, x, y)
    g.dispose()

    return editable_image
Пример #4
0
 def _getArea(self):
     h = int((self._get("scale") * self._get("height")))
     w = int((self._get("scale") * self._get("width")))
     p = self._get("position")
     center = self._get("center")
     theta = self._get("rotation")
     #ar = Area(Rectangle2D.Double(-center.x, -center.y, 1, 1))
     ar = self._area(self, center)
     g = AffineTransform()
     g.translate(p.x, p.y)
     g.rotate(theta)
     g.scale(w, h)
     ar.transform(g)
     return ar
Пример #5
0
 def _getArea(self):
     h = int((self._get("scale") * self._get("height")))
     w = int((self._get("scale") * self._get("width")))
     p = self._get("position")
     center = self._get("center")
     theta = self._get("rotation")
     #ar = Area(Rectangle2D.Double(-center.x, -center.y, 1, 1))
     ar = self._area(self, center)
     g = AffineTransform()
     g.translate(p.x, p.y)
     g.rotate(theta)
     g.scale(w, h)
     ar.transform(g)
     return ar
Пример #6
0
def draw(g, size=(500, 500)):
    """
  Draws a geometry onto a canvas.

  *size* is a tuple that specifies the dimensions of the canvas the geometry will drawn upon. 
  """
    buf = 50.0

    if not isinstance(g, list):
        g = [g]

    e = _fac.createGeometryCollection(g).getEnvelopeInternal()
    scale = size[0] / e.width if e.width > 0 else sys.maxint
    scale = min(scale, size[1] / e.height) if e.height > 0 else 1

    tx = -1 * e.minX
    ty = -1 * e.minY

    at = AffineTransform()

    # scale to size of canvas (inverting the y axis)
    at.scale(scale, -1 * scale)

    # translate to the origin
    at.translate(tx, ty)

    # translate to account for invert
    at.translate(0, -1 * size[1] / scale)

    # buffer
    at.translate(buf / scale, -1 * buf / scale)

    class Panel(swing.JPanel):
        def __init__(self, geoms, atx):
            self.geoms = geoms
            self.atx = atx

        def paintComponent(self, gc):
            opaque = gc.getComposite()
            gc.setRenderingHint(awt.RenderingHints.KEY_ANTIALIASING,
                                awt.RenderingHints.VALUE_ANTIALIAS_ON)
            gc.setStroke(awt.BasicStroke(2))

            i = 0
            for g in self.geoms:
                shp = LiteShape(g, self.atx, False)

                if isinstance(g, (Polygon, MultiPolygon)):
                    i = i + 1
                    gc.setColor(awt.Color.WHITE)
                    gc.setComposite(
                        awt.AlphaComposite.getInstance(
                            awt.AlphaComposite.SRC_OVER, 0.5))
                    gc.fill(shp)

                gc.setComposite(opaque)
                gc.setColor(awt.Color.BLACK)
                gc.draw(shp)

    panel = Panel(g, at)
    s = tuple([int(size[x] + 2 * buf) for x in range(2)])
    panel.preferredSize = s
    frame = swing.JFrame()
    frame.contentPane = panel
    frame.pack()
    frame.visible = True
Пример #7
0
def draw(g, size=(500,500)):
  """
  Draws a geometry onto a canvas.

  *size* is a tuple that specifies the dimensions of the canvas the geometry will drawn upon. 
  """
  buf = 50.0

  if not isinstance(g, list):
    g = [g]

  e = _fac.createGeometryCollection(g).getEnvelopeInternal()
  scale = size[0] / e.width if e.width > 0 else sys.maxint
  scale = min(scale, size[1] / e.height) if e.height > 0 else 1 

  tx = -1*e.minX
  ty = -1*e.minY
       
  at = AffineTransform()
  
  # scale to size of canvas (inverting the y axis)
  at.scale(scale,-1*scale)
  
  # translate to the origin
  at.translate(tx,ty)

  # translate to account for invert
  at.translate(0,-1*size[1]/scale)

  # buffer
  at.translate(buf/scale,-1*buf/scale)
        
  class Panel(swing.JPanel):

    def __init__(self, geoms, atx):
      self.geoms = geoms
      self.atx = atx

    def paintComponent(self, gc):
      opaque = gc.getComposite()      
      gc.setRenderingHint(awt.RenderingHints.KEY_ANTIALIASING, 
        awt.RenderingHints.VALUE_ANTIALIAS_ON)
      gc.setStroke(awt.BasicStroke(2))

      i = 0
      for g in self.geoms:
        shp = LiteShape(g, self.atx, False)

        if isinstance(g, (Polygon, MultiPolygon)):
          i = i + 1
          gc.setColor(awt.Color.WHITE)
          gc.setComposite(awt.AlphaComposite.getInstance(awt.AlphaComposite.SRC_OVER, 0.5))
          gc.fill(shp)

        gc.setComposite(opaque)
        gc.setColor(awt.Color.BLACK)
        gc.draw(shp)

  panel = Panel(g, at)
  s = tuple([int(size[x]+2*buf) for x in range(2)])
  panel.preferredSize = s
  frame = swing.JFrame()
  frame.contentPane = panel
  frame.pack()
  frame.visible = True