Ejemplo n.º 1
0
    def __init__(self, pos, size, svgFile, rotation=0.0):
        super().__init__(pos, size)

        # use the same size for the icon as the grid element
        width, height = self.rect.size

        # pressed version scale
        ds = 0.9
        dx = dy = (1 -
                   ds) / 2  # the position offset to use in x and y directions

        # use pynanosvg to convert svg file to bytes
        svg = Parser.parse_file(svgFile)  #, PPI) ..I do not understand DPI

        # figure out the scaling, making sure not to draw outside the lines
        scale = min(width / svg.width, height / svg.height)
        buf = rasterizer.rasterize(svg, width, height, scale)
        self.surfDefault = image.frombuffer(buf, self.rect.size, 'RGBA')

        # make a mini version for activation state
        buf = rasterizer.rasterize(svg,
                                   width,
                                   height,
                                   scale * ds,
                                   tx=dx * width,
                                   ty=dy * height)
        self.surfPressed = image.frombuffer(buf, self.rect.size, 'RGBA')

        # apply rotation
        if (rotation != 0.0):
            self.surfDefault = transform.rotate(self.surfDefault, rotation)
            self.surfPressed = transform.rotate(self.surfPressed, rotation)

        # initialize the active surface
        self.surf = self.surfDefault
Ejemplo n.º 2
0
def main(shtfileName: str) -> None:
    with open(shtfileName, 'rb') as f:
        data = f.read()
    (bits, rle, _mode, _direction, nFrames, _start,
     _reserved) = unpack(HEADER_FORMAT, data[:HEADER_LENGTH])
    nBits = int(bits[0])
    isRLE = bool(rle[0])
    print(
        f"{shtfileName}: {nBits}-bit {'RLE' if isRLE else 'Uncompressed'} {nFrames} frames"
    )
    assert nBits in (8, 24)
    assert not isRLE, "RLE format is not supported, use -n when generating .sht file"
    startPosition = HEADER_LENGTH + (VGA_PALETTE_SIZE if nBits == 8 else 0)
    pixelSize = 1 if nBits == 8 else 3
    frameSize = WIDTH * HEIGHT * pixelSize
    assert len(data) == startPosition + frameSize * nFrames
    fileNamePrefix = shtfileName[:shtfileName.rindex('.')]
    with TemporaryDirectory(prefix='rtr') as tempDir:
        fileNameTemplate = join(tempDir, f'{fileNamePrefix}-%08d.png')
        fileNames: List[str] = []
        index = startPosition
        for nFrame in range(1, nFrames + 1):
            newIndex = index + frameSize
            frame = data[index:newIndex]
            index = newIndex
            if nBits == 8:
                frame = bytes(chain.from_iterable(zip(frame, frame, frame)))
            surface = frombuffer(frame, (WIDTH, HEIGHT), 'RGB')
            fileName = fileNameTemplate % nFrame
            save(surface, fileName)
            fileNames.append(fileName)
            print(nFrame)
        apngFileName = f'{fileNamePrefix}.png'
        print(f"Creating APNG {apngFileName}...")
        APNG.from_files(fileNames, delay=int(1000.0 / FPS)).save(apngFileName)
Ejemplo n.º 3
0
def cv2_img_to_surface(img):
    """Converts img from cv2 format to pygame format.
    """
    format = "RGB"
    size = img.shape[1::-1]
    img[:, :, [0, 2]] = img[:, :, [2, 0]]
    surface = frombuffer(img.flatten(), size, format)
    return surface.convert()
Ejemplo n.º 4
0
def get_pygame_image(img_cv):
    img_cv_rgb = cv.CreateMat(img_cv.height, img_cv.width, cv.CV_8UC3)
    cv.CvtColor(img_cv, img_cv_rgb, cv.CV_BGR2RGB)
    img_pg = image.frombuffer(img_cv_rgb.tostring(), 
                              cv.GetSize(img_cv_rgb), 
                              "RGB")
    
    return img_pg
Ejemplo n.º 5
0
 def receive_image(self):
     pixels = self.data_socket.receive()
     print(pixels, "\r\n", "len =", len(pixels), "\r\n")
     for pixel in pixels:
         if pixel == '\\':
             print("YES!!!!")
     pixels = decompress(pixels)
     return image.frombuffer(pixels, SCREEN_SIZE, 'RGB')
Ejemplo n.º 6
0
	def __cvimage_to_pygame__( self, image ):
		'''
			converti une image opencv en surface pygame 1 canal gris
		@param image: image opencv
		@type image: IPLimage
		@return: gray Surface image pygame
		@rtype: pygame.Surface
	 	
		'''
		#image_rgb = cv.CreateMat(image.height, image.width, cv.CV_8UC3)
		#cv.CvtColor(image, image_rgb, cv.CV_BGR2RGB)
		return pymage.frombuffer( image.tostring(), cv.GetSize( image ), "P" )
Ejemplo n.º 7
0
    def __init__(self, bus: Bus):
        self._reg = PPURegister(bus)
        self._row = 0
        self._col = 0
        self._req_nmi = lambda: print('Should set requeset nmi function')

        self._bus = bus
        self._pattern = None
        self._pattern_bytes = bytearray(256 * 128 * 3)
        self._fill_pattern()
        self._prepare_pattern()
        self._pattern_image = Image.frombuffer(self._pattern_bytes, (256, 128),
                                               'RGB')
Ejemplo n.º 8
0
 def draw(self):
     Node.draw(self)
     try:
         line = self.queue.get_nowait().rstrip("\n")
         if len(line) > 0 and line[0] == "<" and line[-1] == ">":
             try:
                 w = int(line[1:line.find(",")])
                 h = int(line[line.find(",") + 1:line.find("|")])
                 self._frame = frombuffer(
                     b64decode(line[line.find("|") + 1:-1]), (w, h), "RGBA")
                 if self.width != w:
                     self.width = w
                 if self.height != h:
                     self.height = h
                 self.root_node().redraw = True
             except Exception as e:
                 print("Malformed frame received!")
                 print(e)
     except Empty:
         pass
     if self._frame != None:
         self.surface.blit(self._frame, (0, 0))
Ejemplo n.º 9
0
 def get_surface(self) -> Surface:
     return image.frombuffer(self.image.tobytes(), (self.image.width, self.image.height), "RGB")
Ejemplo n.º 10
0
	def setActive(self):
		width = self.window.get_width()
		height = self.window.get_height()
		self.background = image.frombuffer(image.tostring(self.window,"RGB"),(width,height),"RGB")
		self.ttype = randint(1,self.TOTALTYPES)
		self.active = True