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
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)
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()
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
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')
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" )
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')
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))
def get_surface(self) -> Surface: return image.frombuffer(self.image.tobytes(), (self.image.width, self.image.height), "RGB")
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