Example #1
0
def test_skia():
    surface = skia.Surface(256, 256)
    canvas = surface.getCanvas()
    draw(canvas)
    image = surface.makeImageSnapshot()
    data = image.encodeToData()
    encoded = bytes(data)
Example #2
0
def surface(request):
    if request.param == 'gpu':
        context = request.getfixturevalue('context')
        info = skia.ImageInfo.MakeN32Premul(320, 240)
        return skia.Surface.MakeRenderTarget(context, skia.Budgeted.kNo, info)
    else:
        return skia.Surface(320, 240)
Example #3
0
def _savePixelImage(picture, path, format, whiteBackground=False):
    x, y, width, height = picture.cullRect()
    assert x == 0 and y == 0
    surface = skia.Surface(int(width), int(height))
    with surface as canvas:
        if whiteBackground:
            canvas.clear(skia.ColorWHITE)
        canvas.drawPicture(picture)
    image = surface.makeImageSnapshot()
    image.save(os.fspath(path), format)
Example #4
0
 def get_image(self):
     #===================
     # Draw image to fit tile set's pixel rectangle
     surface = skia.Surface(int(self.__scaling[0] * self.__size[0] + 0.5),
                            int(self.__scaling[1] * self.__size[1] + 0.5))
     canvas = surface.getCanvas()
     for (path, paint) in self.__path_list:
         canvas.drawPath(path, paint)
     log('Making image snapshot...')
     image = surface.makeImageSnapshot()
     return image.toarray(colorType=skia.kBGRA_8888_ColorType)
Example #5
0
 def get_image(self):
 #===================
     # Draw image to fit tile set's pixel rectangle
     surface = skia.Surface(int(self.__scaling[0]*self.__size[0] + 0.5),
                            int(self.__scaling[1]*self.__size[1] + 0.5))
     canvas = surface.getCanvas()
     canvas.clear(skia.Color4f(0xFFFFFFFF))
     self.__svg_drawing.draw_element(canvas, self.__bbox)
     log('Making image snapshot...')
     image = surface.makeImageSnapshot()
     return image.toarray(colorType=skia.kBGRA_8888_ColorType)
Example #6
0
    def get_tile(self, tile):
    #========================
        surface = skia.Surface(*self.__tile_size)  ## In pixels...
        canvas = surface.getCanvas()
        canvas.clear(skia.Color4f(0xFFFFFFFF))
        canvas.translate(self.__pixel_offset[0] + (self.__tile_origin[0] - tile.x)*self.__tile_size[0],
                         self.__pixel_offset[1] + (self.__tile_origin[1] - tile.y)*self.__tile_size[1])
        quadkey = mercantile.quadkey(tile)
        self.__svg_drawing.draw_element(canvas, self.__tile_bboxes.get(quadkey))

        image = surface.makeImageSnapshot()
        return image.toarray(colorType=skia.kBGRA_8888_ColorType)
Example #7
0
 def get_tile(self, tile):
     #========================
     surface = skia.Surface(*self.__tile_size)
     canvas = surface.getCanvas()
     canvas.translate(
         self.__pixel_offset[0] +
         (self.__tile_origin[0] - tile.x) * self.__tile_size[0],
         self.__pixel_offset[1] +
         (self.__tile_origin[1] - tile.y) * self.__tile_size[1])
     quadkey = mercantile.quadkey(tile)
     for path, paint, bbox in self.__tile_paths.get(quadkey, []):
         canvas.drawPath(path, paint)
     image = surface.makeImageSnapshot()
     return image.toarray(colorType=skia.kBGRA_8888_ColorType)
Example #8
0
 def __init__(self,
              width=1000,
              height=1000,
              seed=random.randint(0, 10000),
              color_seed=random.randint(0, 10000)):
     self.seed = seed
     self.surface: skia.Surface = skia.Surface(width, height)
     self.canvas: skia.Canvas = self.surface.getCanvas()
     self.canvas.clear(skia.ColorWHITE)
     self.items: list[Shape] = []
     print(">> using seed: {}".format(self.seed))
     self.rnd = random.default_rng(seed)
     self.color_rnd = random.default_rng(seed)
     self.ft = Gens(self.rnd)
     self.drawn = False
     self.__init_accessors()
Example #9
0
    def Composite(pens, rect, save_to, scale=1, context=None, style=None):
        if context:
            info = skia.ImageInfo.MakeN32Premul(rect.w, rect.h)
            surface = skia.Surface.MakeRenderTarget(context, skia.Budgeted.kNo,
                                                    info)
        else:
            print("CPU RENDER")
            surface = skia.Surface(rect.w, rect.h)

        with surface as canvas:
            if callable(pens):
                pens(canvas)  # direct-draw
            else:
                SkiaPen.CompositeToCanvas(pens,
                                          rect,
                                          canvas,
                                          scale=scale,
                                          style=style)

        image = surface.makeImageSnapshot()
        image.save(save_to, skia.kPNG)
Example #10
0
    def Precompose(pens, rect, fmt=None, context=None, scale=1, disk=False):
        rect = rect.round()
        if context:
            info = skia.ImageInfo.MakeN32Premul(rect.w, rect.h)
            surface = skia.Surface.MakeRenderTarget(context, skia.Budgeted.kNo,
                                                    info)
            assert surface is not None
        else:
            print("CPU PRECOMPOSE")
            surface = skia.Surface(rect.w, rect.h)

        with surface as canvas:
            SkiaPen.CompositeToCanvas(pens.translate(-rect.x, -rect.y), rect,
                                      canvas)
        img = surface.makeImageSnapshot()
        if scale != 1:
            x, y, w, h = rect.scale(scale)
            img = img.resize(int(w), int(h))

        if disk:
            img.save(disk, skia.kPNG)
            #return disk
        return img
def skia_canvas(w, h):
    surface = skia.Surface(w, h)
    canvas = surface.getCanvas()
    yield canvas
Example #12
0
def test_Surface_init(args):
    check_surface(skia.Surface(*args))
Example #13
0
 def new_canvas(self, width, height):
     self.surface = skia.Surface(width, height)
     canvas = self.surface.getCanvas()
     return canvas