diff options
Diffstat (limited to 'src/components/image.py')
| -rw-r--r-- | src/components/image.py | 129 |
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) |
