New graphics

This commit is contained in:
Kenwood 2022-04-07 11:47:55 -04:00
parent 12d87af633
commit 9c73d1535a
2 changed files with 47 additions and 3 deletions

BIN
Resources/RadioFont.ttf Normal file

Binary file not shown.

View File

@ -1,7 +1,7 @@
import subprocess as sp
from Xlib import display, X
from PIL import Image
from PIL import Image, ImageFont, ImageDraw
class Streamer:
@ -67,6 +67,9 @@ class Streamer:
# This is the ffmpeg pipe streamer!
self.pipe = sp.Popen(cmd_out, stdin=sp.PIPE)
# Graphics and resources
self.font = ImageFont.truetype(r"../../Resources/RadioFont.ttf", 20)
def getFrame(self):
"""
Returns a single cropped sstv video frame
@ -79,13 +82,54 @@ class Streamer:
return image
def drawGraphics(self, image: Image):
"""
Draws graphics and sprites over
a frame
"""
frame = Image.new(mode="RGB", size=(1280, 720))
# Scale and paste
image = image.resize((960, 720), Image.ANTIALIAS)
frame.paste(image)
# Populate text, normally this should poll or use shared vars!
info = """
KW1FOX-1
Online!
Volt: N/A
Last comm: N/A
KW1FOX-2
Offline.
Volt: N/A
Last comm: N/A
KW1FOX-3
Offline.
Volt: N/A
Last comm: N/A
Currently Showing:
KW1FOX-1
NOCOM
NOMETA
"""
# Draw text
draw = ImageDraw.Draw(frame)
draw.text((960 + 10, 10), info, font=self.font, align="left")
return frame
def stream(self):
"""
Actually streams!
"""
while True:
self.getFrame().save(self.pipe.stdin, "PNG")
self.drawGraphics(self.getFrame()).save(self.pipe.stdin, "PNG")
def __del__(self):
self.dsp.close()
@ -97,5 +141,5 @@ class Streamer:
if __name__ == "__main__":
myStreamer = Streamer()
# myStreamer.getFrame().show()
# myStreamer.drawGraphics(Image.open("../../Resources/KW1FOX-1_320x240.png")).show()
myStreamer.stream()