aboutsummaryrefslogtreecommitdiff
path: root/src/components/image.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/image.py')
-rw-r--r--src/components/image.py129
1 files changed, 0 insertions, 129 deletions
diff --git a/src/components/image.py b/src/components/image.py
deleted file mode 100644
index 2393611..0000000
--- a/src/components/image.py
+++ /dev/null
@@ -1,129 +0,0 @@
-from PIL import Image, ImageDraw, ImageEnhance
-from PyQt6 import QtGui, QtCore, QtWidgets
-import os
-
-from ..component import Component
-from ..toolkit.frame import BlankFrame
-
-
-class Component(Component):
- name = "Image"
- version = "1.0.1"
-
- def widget(self, *args):
- super().widget(*args)
- self.page.pushButton_image.clicked.connect(self.pickImage)
- self.trackWidgets(
- {
- "imagePath": self.page.lineEdit_image,
- "scale": self.page.spinBox_scale,
- "stretchScale": self.page.spinBox_scale_stretch,
- "rotate": self.page.spinBox_rotate,
- "color": self.page.spinBox_color,
- "xPosition": self.page.spinBox_x,
- "yPosition": self.page.spinBox_y,
- "stretched": self.page.checkBox_stretch,
- "mirror": self.page.checkBox_mirror,
- },
- presetNames={
- "imagePath": "image",
- "xPosition": "x",
- "yPosition": "y",
- },
- relativeWidgets=["xPosition", "yPosition", "scale"],
- )
-
- def previewRender(self):
- return self.drawFrame(self.width, self.height)
-
- def properties(self):
- props = ["static"]
- if not os.path.exists(self.imagePath):
- props.append("error")
- return props
-
- def error(self):
- if not self.imagePath:
- return "There is no image selected."
- if not os.path.exists(self.imagePath):
- return "The image selected does not exist!"
-
- def frameRender(self, frameNo):
- return self.drawFrame(self.width, self.height)
-
- def drawFrame(self, width, height):
- frame = BlankFrame(width, height)
- if self.imagePath and os.path.exists(self.imagePath):
- scale = self.scale if not self.stretched else self.stretchScale
- image = Image.open(self.imagePath)
-
- # Modify image's appearance
- if self.color != 100:
- image = ImageEnhance.Color(image).enhance(float(self.color / 100))
- if self.mirror:
- image = image.transpose(Image.Transpose.FLIP_LEFT_RIGHT)
- if self.stretched and image.size != (width, height):
- image = image.resize((width, height), Image.Resampling.LANCZOS)
- if scale != 100:
- newHeight = int((image.height / 100) * scale)
- newWidth = int((image.width / 100) * scale)
- image = image.resize((newWidth, newHeight), Image.Resampling.LANCZOS)
-
- # Paste image at correct position
- frame.paste(image, box=(self.xPosition, self.yPosition))
- if self.rotate != 0:
- frame = frame.rotate(self.rotate)
-
- return frame
-
- def pickImage(self):
- imgDir = self.settings.value("componentDir", os.path.expanduser("~"))
- filename, _ = QtWidgets.QFileDialog.getOpenFileName(
- self.page,
- "Choose Image",
- imgDir,
- "Image Files (%s)" % " ".join(self.core.imageFormats),
- )
- if filename:
- self.settings.setValue("componentDir", os.path.dirname(filename))
- self.mergeUndo = False
- self.page.lineEdit_image.setText(filename)
- self.mergeUndo = True
-
- def command(self, arg):
- if "=" in arg:
- key, arg = arg.split("=", 1)
- if key == "path" and os.path.exists(arg):
- try:
- Image.open(arg)
- self.page.lineEdit_image.setText(arg)
- self.page.checkBox_stretch.setChecked(True)
- return
- except OSError as e:
- print("Not a supported image format")
- quit(1)
- super().command(arg)
-
- def commandHelp(self):
- print("Load an image:\n path=/filepath/to/image.png")
-
- def savePreset(self):
- # Maintain the illusion that the scale spinbox is one widget
- scaleBox = self.page.spinBox_scale
- stretchScaleBox = self.page.spinBox_scale_stretch
- if self.page.checkBox_stretch.isChecked():
- scaleBox.setValue(stretchScaleBox.value())
- else:
- stretchScaleBox.setValue(scaleBox.value())
- return super().savePreset()
-
- def update(self):
- # Maintain the illusion that the scale spinbox is one widget
- scaleBox = self.page.spinBox_scale
- stretchScaleBox = self.page.spinBox_scale_stretch
- if self.page.checkBox_stretch.isChecked():
- scaleBox.setVisible(False)
- stretchScaleBox.setVisible(True)
- else:
- scaleBox.setVisible(True)
- stretchScaleBox.setVisible(False)