123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- from qtpy.QtCore import Qt
- from qtpy import QtGui
- from qtpy import QtWidgets
- from PIL import Image
- from PIL import ImageEnhance
- class BrightnessContrastDialog(QtWidgets.QDialog):
- def __init__(self, filename, callback, parent=None):
- super(BrightnessContrastDialog, self).__init__(parent)
- self.setModal(True)
- self.setWindowTitle("Brightness/Contrast")
- self.slider_brightness = self._create_slider()
- self.slider_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)
- self.img = Image.open(filename).convert("RGBA")
- self.callback = callback
- def onNewValue(self, value):
- brightness = self.slider_brightness.value() / 100.0
- contrast = self.slider_contrast.value() / 100.0
- img = self.img
- img = ImageEnhance.Brightness(img).enhance(brightness)
- img = ImageEnhance.Contrast(img).enhance(contrast)
- bytes = img.tobytes("raw", "RGBA")
- qimage = QtGui.QImage(
- bytes, img.size[0], img.size[1], QtGui.QImage.Format_RGB32
- ).rgbSwapped()
- self.callback(qimage)
- def _create_slider(self):
- slider = QtWidgets.QSlider(Qt.Horizontal)
- slider.setRange(0, 300)
- slider.setValue(100)
- slider.valueChanged.connect(self.onNewValue)
- return slider
|