|
@@ -1,10 +1,8 @@
|
|
|
import PIL.Image
|
|
|
import PIL.ImageEnhance
|
|
|
-from qtpy import QtGui
|
|
|
from qtpy import QtWidgets
|
|
|
from qtpy.QtCore import Qt
|
|
|
-
|
|
|
-from .. import utils
|
|
|
+from qtpy.QtGui import QImage
|
|
|
|
|
|
|
|
|
class BrightnessContrastDialog(QtWidgets.QDialog):
|
|
@@ -13,28 +11,29 @@ class BrightnessContrastDialog(QtWidgets.QDialog):
|
|
|
self.setModal(True)
|
|
|
self.setWindowTitle("Brightness/Contrast")
|
|
|
|
|
|
- self.slider_brightness = self._create_slider()
|
|
|
- self.slider_contrast = self._create_slider()
|
|
|
+ self.slider_brightness, widget_brightness = self._create_slider()
|
|
|
+ self.slider_contrast, widget_contrast = self._create_slider()
|
|
|
|
|
|
- formLayout = QtWidgets.QFormLayout()
|
|
|
- formLayout.addRow(self.tr("Brightness"), self.slider_brightness)
|
|
|
- formLayout.addRow(self.tr("Contrast"), self.slider_contrast)
|
|
|
- self.setLayout(formLayout)
|
|
|
+ form_layout = QtWidgets.QFormLayout()
|
|
|
+ form_layout.addRow(self.tr("Brightness"), widget_brightness)
|
|
|
+ form_layout.addRow(self.tr("Contrast"), widget_contrast)
|
|
|
+ self.setLayout(form_layout)
|
|
|
|
|
|
assert isinstance(img, PIL.Image.Image)
|
|
|
self.img = img
|
|
|
self.callback = callback
|
|
|
|
|
|
- def onNewValue(self, value):
|
|
|
+ def onNewValue(self, _):
|
|
|
brightness = self.slider_brightness.value() / 50.0
|
|
|
contrast = self.slider_contrast.value() / 50.0
|
|
|
|
|
|
img = self.img
|
|
|
- img = PIL.ImageEnhance.Brightness(img).enhance(brightness)
|
|
|
- img = PIL.ImageEnhance.Contrast(img).enhance(contrast)
|
|
|
+ if brightness != 1:
|
|
|
+ img = PIL.ImageEnhance.Brightness(img).enhance(brightness)
|
|
|
+ if contrast != 1:
|
|
|
+ img = PIL.ImageEnhance.Contrast(img).enhance(contrast)
|
|
|
|
|
|
- img_data = utils.img_pil_to_data(img)
|
|
|
- qimage = QtGui.QImage.fromData(img_data)
|
|
|
+ qimage = QImage(img.tobytes(), img.width, img.height, QImage.Format_RGB888)
|
|
|
self.callback(qimage)
|
|
|
|
|
|
def _create_slider(self):
|
|
@@ -42,4 +41,13 @@ class BrightnessContrastDialog(QtWidgets.QDialog):
|
|
|
slider.setRange(0, 150)
|
|
|
slider.setValue(50)
|
|
|
slider.valueChanged.connect(self.onNewValue)
|
|
|
- return slider
|
|
|
+ value_label = QtWidgets.QLabel(f"{slider.value() / 50:.2f}")
|
|
|
+ slider.valueChanged.connect(
|
|
|
+ lambda value: value_label.setText(f"{value / 50:.2f}")
|
|
|
+ )
|
|
|
+ layout = QtWidgets.QHBoxLayout()
|
|
|
+ layout.addWidget(slider)
|
|
|
+ layout.addWidget(value_label)
|
|
|
+ widget = QtWidgets.QWidget()
|
|
|
+ widget.setLayout(layout)
|
|
|
+ return slider, widget
|