Merge pull request #32 from FoamyGuy/brightness_arg
add brightness argument to virtualdisplay and xdisplay_mirror
This commit is contained in:
commit
bf3409d92b
2 changed files with 15 additions and 3 deletions
|
|
@ -25,6 +25,7 @@ from subprocess import Popen
|
||||||
|
|
||||||
import click
|
import click
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
from PIL import ImageEnhance
|
||||||
from pyvirtualdisplay.smartdisplay import SmartDisplay
|
from pyvirtualdisplay.smartdisplay import SmartDisplay
|
||||||
|
|
||||||
import adafruit_blinka_raspberry_pi5_piomatter as piomatter
|
import adafruit_blinka_raspberry_pi5_piomatter as piomatter
|
||||||
|
|
@ -37,10 +38,12 @@ from adafruit_blinka_raspberry_pi5_piomatter.pixelmappers import simple_multilan
|
||||||
@click.option("--backend", help="The pyvirtualdisplay backend to use", default="xvfb")
|
@click.option("--backend", help="The pyvirtualdisplay backend to use", default="xvfb")
|
||||||
@click.option("--extra-args", help="Extra arguments to pass to the backend server", default="")
|
@click.option("--extra-args", help="Extra arguments to pass to the backend server", default="")
|
||||||
@click.option("--rfbport", help="The port number for the --backend xvnc", default=None, type=int)
|
@click.option("--rfbport", help="The port number for the --backend xvnc", default=None, type=int)
|
||||||
|
@click.option("--brightness", help="The brightness factor of the image output to the matrix",
|
||||||
|
default=1.0, type=click.FloatRange(min=0.1, max=1.0))
|
||||||
@click.option("--use-xauth/--no-use-xauth", help="If a Xauthority file should be created", default=False)
|
@click.option("--use-xauth/--no-use-xauth", help="If a Xauthority file should be created", default=False)
|
||||||
@piomatter_click.standard_options
|
@piomatter_click.standard_options
|
||||||
@click.argument("command", nargs=-1)
|
@click.argument("command", nargs=-1)
|
||||||
def main(scale, backend, use_xauth, extra_args, rfbport, width, height, serpentine, rotation, pinout,
|
def main(scale, backend, use_xauth, extra_args, rfbport, brightness, width, height, serpentine, rotation, pinout,
|
||||||
n_planes, n_temporal_planes, n_addr_lines, n_lanes, command):
|
n_planes, n_temporal_planes, n_addr_lines, n_lanes, command):
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
if backend == "xvnc":
|
if backend == "xvnc":
|
||||||
|
|
@ -61,8 +64,12 @@ def main(scale, backend, use_xauth, extra_args, rfbport, width, height, serpenti
|
||||||
with SmartDisplay(backend=backend, use_xauth=use_xauth, size=(round(width*scale),round(height*scale)), manage_global_env=False, **kwargs) as disp, Popen(command, env=disp.env()) as proc:
|
with SmartDisplay(backend=backend, use_xauth=use_xauth, size=(round(width*scale),round(height*scale)), manage_global_env=False, **kwargs) as disp, Popen(command, env=disp.env()) as proc:
|
||||||
while proc.poll() is None:
|
while proc.poll() is None:
|
||||||
img = disp.grab(autocrop=False)
|
img = disp.grab(autocrop=False)
|
||||||
|
|
||||||
if img is None:
|
if img is None:
|
||||||
continue
|
continue
|
||||||
|
if brightness != 1.0:
|
||||||
|
darkener = ImageEnhance.Brightness(img)
|
||||||
|
img = darkener.enhance(brightness)
|
||||||
img = img.resize((width, height))
|
img = img.resize((width, height))
|
||||||
framebuffer[:, :] = np.array(img)
|
framebuffer[:, :] = np.array(img)
|
||||||
matrix.show()
|
matrix.show()
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ This example command will mirror a 128x128 pixel square from the top left of the
|
||||||
|
|
||||||
import click
|
import click
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from PIL import ImageGrab
|
from PIL import ImageEnhance, ImageGrab
|
||||||
|
|
||||||
import adafruit_blinka_raspberry_pi5_piomatter as piomatter
|
import adafruit_blinka_raspberry_pi5_piomatter as piomatter
|
||||||
import adafruit_blinka_raspberry_pi5_piomatter.click as piomatter_click
|
import adafruit_blinka_raspberry_pi5_piomatter.click as piomatter_click
|
||||||
|
|
@ -31,9 +31,11 @@ from adafruit_blinka_raspberry_pi5_piomatter.pixelmappers import simple_multilan
|
||||||
@click.option("--mirror-region", help="Region of X display to mirror. Comma seperated x,y,w,h. "
|
@click.option("--mirror-region", help="Region of X display to mirror. Comma seperated x,y,w,h. "
|
||||||
"Default will mirror entire display.", default="")
|
"Default will mirror entire display.", default="")
|
||||||
@click.option("--x-display", help="The X display to mirror. Default is :0", default=":0")
|
@click.option("--x-display", help="The X display to mirror. Default is :0", default=":0")
|
||||||
|
@click.option("--brightness", help="The brightness factor of the image output to the matrix",
|
||||||
|
default=1.0, type=click.FloatRange(min=0.1, max=1.0))
|
||||||
@piomatter_click.standard_options(n_lanes=2, n_temporal_planes=0)
|
@piomatter_click.standard_options(n_lanes=2, n_temporal_planes=0)
|
||||||
def main(width, height, serpentine, rotation, pinout, n_planes,
|
def main(width, height, serpentine, rotation, pinout, n_planes,
|
||||||
n_temporal_planes, n_addr_lines, n_lanes, mirror_region, x_display):
|
n_temporal_planes, n_addr_lines, n_lanes, mirror_region, x_display, brightness):
|
||||||
if n_lanes != 2:
|
if n_lanes != 2:
|
||||||
pixelmap = simple_multilane_mapper(width, height, n_addr_lines, n_lanes)
|
pixelmap = simple_multilane_mapper(width, height, n_addr_lines, n_lanes)
|
||||||
geometry = piomatter.Geometry(width=width, height=height, n_planes=n_planes, n_addr_lines=n_addr_lines,
|
geometry = piomatter.Geometry(width=width, height=height, n_planes=n_planes, n_addr_lines=n_addr_lines,
|
||||||
|
|
@ -59,6 +61,9 @@ def main(width, height, serpentine, rotation, pinout, n_planes,
|
||||||
img = img.crop((mirror_region[0], mirror_region[1], # left,top
|
img = img.crop((mirror_region[0], mirror_region[1], # left,top
|
||||||
mirror_region[0] + mirror_region[2], # right
|
mirror_region[0] + mirror_region[2], # right
|
||||||
mirror_region[1] + mirror_region[3])) # bottom
|
mirror_region[1] + mirror_region[3])) # bottom
|
||||||
|
if brightness != 1.0:
|
||||||
|
darkener = ImageEnhance.Brightness(img)
|
||||||
|
img = darkener.enhance(brightness)
|
||||||
img = img.resize((width, height))
|
img = img.resize((width, height))
|
||||||
|
|
||||||
framebuffer[:, :] = np.array(img)
|
framebuffer[:, :] = np.array(img)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue