Systemd changes | root script | URL support for gif effects (#1319)

* Systemd changes and URL option for Gif Effects
* Add grayscale to gif effect
* WebUI adjustments
* Rename version to .version
* Copy runHyperionAsRoot.sh to rpi packages
* Pack script into all unix packages
* Start hyperion only after network is available
* Snap builds removed due to poor server connection
* Flexible updateHyperionUser.sh
* updateHyperionUser script entered in the package
* Print help on none sudo execute
* Corrected embedded Python location
* Replacement for the QWindowsScreen grabWindow function
* Updated to latest 2.x mbedtls version 2.27

Co-authored-by: LordGrey <lordgrey.emmel@gmail.com>
This commit is contained in:
Markus
2021-10-02 18:02:52 +02:00
committed by GitHub
parent f269268def
commit eb96553975
37 changed files with 776 additions and 573 deletions

View File

@@ -3,8 +3,14 @@
"script" : "gif.py",
"args" :
{
"image" : ":fire.gif",
"cropBottom": 0,
"cropLeft": 0,
"cropRight": 0,
"cropTop": 0,
"file" : ":fire.gif",
"fps" :25,
"grayscale": false,
"imageSource": "file",
"reverse" : false
}
}

View File

@@ -1,18 +1,27 @@
import hyperion, time
# Get the parameters
imageFile = hyperion.args.get('image')
imageData = hyperion.args.get('url') if hyperion.args.get('imageSource', "") == "url" else hyperion.args.get('file')
framesPerSecond = float(hyperion.args.get('fps', 25))
reverse = bool(hyperion.args.get('reverse', False))
reverse = bool(hyperion.args.get('reverse', False))
cropLeft = int(hyperion.args.get('cropLeft', 0))
cropTop = int(hyperion.args.get('cropTop', 0))
cropRight = int(hyperion.args.get('cropRight', 0))
cropBottom = int(hyperion.args.get('cropBottom', 0))
grayscale = bool(hyperion.args.get('grayscale', False))
sleepTime = 1./framesPerSecond
imageList = []
imageFrameList = []
if imageFile:
imageList = [reversed(hyperion.getImage(imageFile))] if reverse else hyperion.getImage(imageFile)
if imageData:
if reverse:
imageFrameList = reversed(hyperion.getImage(imageData, cropLeft, cropTop, cropRight, cropBottom, grayscale))
else:
imageFrameList = hyperion.getImage(imageData, cropLeft, cropTop, cropRight, cropBottom, grayscale)
# Start the write data loop
while not hyperion.abort() and imageList:
for image in imageList:
hyperion.setImage(image["imageWidth"], image["imageHeight"], image["imageData"])
time.sleep(sleepTime)
while not hyperion.abort() and imageFrameList:
for image in imageFrameList:
if not hyperion.abort():
hyperion.setImage(image["imageWidth"], image["imageHeight"], image["imageData"])
time.sleep(sleepTime)

View File

@@ -3,8 +3,14 @@
"script" : "gif.py",
"args" :
{
"image" : ":lights.gif",
"cropBottom": 0,
"cropLeft": 0,
"cropRight": 0,
"cropTop": 0,
"file" : ":lights.gif",
"fps" :25,
"reverse" : false
"grayscale": false,
"imageSource": "file",
"reverse": false
}
}

16
effects/matrix.json Normal file
View File

@@ -0,0 +1,16 @@
{
"name" : "Matrix",
"script" : "gif.py",
"args" :
{
"cropBottom": 0,
"cropLeft": 0,
"cropRight": 0,
"cropTop": 0,
"fps": 30,
"grayscale": false,
"imageSource": "url",
"reverse": false,
"url": "https://i.gifer.com/1j6F.gif"
}
}

View File

@@ -4,17 +4,79 @@
"title":"edt_eff_gif_header",
"required":true,
"properties": {
"image": {
"imageSource": {
"type": "string",
"title": "edt_eff_image_source",
"format": "radio",
"enum": ["url", "file"],
"options" : {
"enum_titles" : ["edt_eff_image_source_url", "edt_eff_image_source_file"]
},
"propertyOrder" : 1
},
"url": {
"type": "string",
"title":"edt_eff_url",
"default": "",
"options": {
"dependencies": {
"imageSource": "url"
}
},
"propertyOrder" : 2
},
"file": {
"type": "string",
"title":"edt_eff_image",
"format" : "url",
"options" :
{
"upload" : true,
"auto_upload" : true
"auto_upload" : true,
"dependencies": {
"imageSource": "file"
}
},
"default": "",
"propertyOrder" : 1
"propertyOrder" : 3
},
"cropLeft": {
"type": "integer",
"title":"edt_conf_v4l2_cropLeft_title",
"default": 0,
"minimum" : 0,
"step" : 1,
"propertyOrder" : 4
},
"cropTop": {
"type": "integer",
"title":"edt_conf_v4l2_cropTop_title",
"default": 0,
"minimum" : 0,
"step" : 1,
"propertyOrder" : 5
},
"cropRight": {
"type": "integer",
"title":"edt_conf_v4l2_cropRight_title",
"default": 0,
"minimum" : 0,
"step" : 1,
"propertyOrder" : 6
},
"cropBottom": {
"type": "integer",
"title":"edt_conf_v4l2_cropBottom_title",
"default": 0,
"minimum" : 0,
"step" : 1,
"propertyOrder" : 7
},
"grayscale": {
"type": "boolean",
"title":"edt_eff_grayscale",
"default": false,
"propertyOrder" : 8
},
"fps": {
"type": "integer",
@@ -23,13 +85,13 @@
"minimum" : 1,
"maximum" : 100,
"step" : 1,
"propertyOrder" : 2
"propertyOrder" : 9
},
"reverse": {
"type": "boolean",
"title":"edt_eff_reversedirection",
"default": false,
"propertyOrder" : 3
"propertyOrder" : 10
}
},
"additionalProperties": false