mirror of
https://github.com/koush/scrypted.git
synced 2026-05-04 21:30:30 +01:00
python-codecs: fix pil rgba to jpg. fix image close race condition.
This commit is contained in:
8
plugins/python-codecs/.vscode/settings.json
vendored
8
plugins/python-codecs/.vscode/settings.json
vendored
@@ -1,8 +1,8 @@
|
||||
|
||||
{
|
||||
// docker installation
|
||||
// "scrypted.debugHost": "koushik-thin",
|
||||
// "scrypted.serverRoot": "/server",
|
||||
"scrypted.debugHost": "koushik-windows",
|
||||
"scrypted.serverRoot": "/server",
|
||||
|
||||
// windows installation
|
||||
// "scrypted.debugHost": "koushik-windows",
|
||||
@@ -13,8 +13,8 @@
|
||||
// "scrypted.serverRoot": "/home/pi/.scrypted",
|
||||
|
||||
// local checkout
|
||||
"scrypted.debugHost": "127.0.0.1",
|
||||
"scrypted.serverRoot": "/Users/koush/.scrypted",
|
||||
// "scrypted.debugHost": "127.0.0.1",
|
||||
// "scrypted.serverRoot": "/Users/koush/.scrypted",
|
||||
|
||||
"scrypted.pythonRemoteRoot": "${config:scrypted.serverRoot}/volume/plugin.zip",
|
||||
"python.analysis.extraPaths": [
|
||||
|
||||
4
plugins/python-codecs/package-lock.json
generated
4
plugins/python-codecs/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@scrypted/python-codecs",
|
||||
"version": "0.1.68",
|
||||
"version": "0.1.69",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@scrypted/python-codecs",
|
||||
"version": "0.1.68",
|
||||
"version": "0.1.69",
|
||||
"devDependencies": {
|
||||
"@scrypted/sdk": "file:../../sdk"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@scrypted/python-codecs",
|
||||
"version": "0.1.68",
|
||||
"version": "0.1.69",
|
||||
"description": "Python Codecs for Scrypted",
|
||||
"keywords": [
|
||||
"scrypted",
|
||||
|
||||
@@ -144,6 +144,7 @@ class GstImage(scrypted_sdk.Image):
|
||||
if bands and bands != capsBands:
|
||||
reformat = format
|
||||
|
||||
colored = None
|
||||
if reformat or crop:
|
||||
colored = image
|
||||
image = await image.toImageInternal(
|
||||
@@ -152,8 +153,6 @@ class GstImage(scrypted_sdk.Image):
|
||||
"format": reformat,
|
||||
}
|
||||
)
|
||||
asyncio.ensure_future(colored.close(), loop = asyncio.get_event_loop())
|
||||
|
||||
try:
|
||||
return await image.toBuffer(
|
||||
{
|
||||
@@ -162,6 +161,8 @@ class GstImage(scrypted_sdk.Image):
|
||||
)
|
||||
finally:
|
||||
await image.close()
|
||||
if colored:
|
||||
await colored.close()
|
||||
finally:
|
||||
gst_buffer.unmap(info)
|
||||
|
||||
|
||||
@@ -54,7 +54,14 @@ class PILImage(scrypted_sdk.Image):
|
||||
|
||||
def save():
|
||||
bytesArray = io.BytesIO()
|
||||
pilImage.pilImage.save(bytesArray, format='JPEG')
|
||||
if pilImage.pilImage.mode == 'RGBA':
|
||||
rgb = pilImage.pilImage.convert('RGB')
|
||||
try:
|
||||
rgb.save(bytesArray, format='JPEG')
|
||||
finally:
|
||||
rgb.close()
|
||||
else:
|
||||
pilImage.pilImage.save(bytesArray, format='JPEG')
|
||||
# pilImage.pilImage.save(bytesArray, format=options['format'])
|
||||
return bytesArray.getvalue()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user