Add a thumbnail to 3mf projects

This commit is contained in:
fieldOfView 2021-11-30 18:09:41 +01:00
parent 6a988c8fa0
commit 0813f27389

View file

@ -5,6 +5,8 @@ import configparser
from io import StringIO from io import StringIO
import zipfile import zipfile
from PyQt5.QtCore import QBuffer
from UM.Application import Application from UM.Application import Application
from UM.Logger import Logger from UM.Logger import Logger
from UM.Preferences import Preferences from UM.Preferences import Preferences
@ -14,7 +16,7 @@ from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura") catalog = i18nCatalog("cura")
from cura.Utils.Threading import call_on_qt_thread from cura.Utils.Threading import call_on_qt_thread
from cura.Snapshot import Snapshot
class ThreeMFWorkspaceWriter(WorkspaceWriter): class ThreeMFWorkspaceWriter(WorkspaceWriter):
def __init__(self): def __init__(self):
@ -86,7 +88,23 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter):
self._writePluginMetadataToArchive(archive) self._writePluginMetadataToArchive(archive)
# Close the archive & reset states. # Attempt to add a thumbnail
Logger.log("d", "Creating thumbnail image...")
try:
snapshot = Snapshot.snapshot(width = 300, height = 300)
except Exception:
snapshot = None
Logger.logException("w", "Failed to create snapshot image")
if snapshot:
thumbnail_file = zipfile.ZipInfo("Metadata/thumbnail.png")
thumbnail_buffer = QBuffer()
thumbnail_buffer.open(QBuffer.ReadWrite)
snapshot.save(thumbnail_buffer, "PNG")
archive.writestr(thumbnail_file, thumbnail_buffer.data())
# Close the archive & reset states
archive.close() archive.close()
except PermissionError: except PermissionError:
self.setInformation(catalog.i18nc("@error:zip", "No permission to write the workspace here.")) self.setInformation(catalog.i18nc("@error:zip", "No permission to write the workspace here."))