def test_skia(): surface = skia.Surface(256, 256) canvas = surface.getCanvas() draw(canvas) image = surface.makeImageSnapshot() data = image.encodeToData() encoded = bytes(data)
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)
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)
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)
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)
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)
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)
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()
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)
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
def test_Surface_init(args): check_surface(skia.Surface(*args))
def new_canvas(self, width, height): self.surface = skia.Surface(width, height) canvas = self.surface.getCanvas() return canvas