提交 83bc799f 编写于 作者: K Kentaro Wada

Pass PIL.Image.Image to BrightnessContrastDialog

上级 a2ebb1fe
......@@ -1364,7 +1364,9 @@ class MainWindow(QtWidgets.QMainWindow):
def brightnessContrast(self, value):
dialog = BrightnessContrastDialog(
self.filename, self.onNewBrightnessContrast, parent=self
utils.img_data_to_pil(self.imageData),
self.onNewBrightnessContrast,
parent=self,
)
brightness, contrast = self.brightnessContrast_values.get(
self.filename, (None, None)
......@@ -1484,7 +1486,9 @@ class MainWindow(QtWidgets.QMainWindow):
)
# set brightness constrast values
dialog = BrightnessContrastDialog(
self.filename, self.onNewBrightnessContrast, parent=self
utils.img_data_to_pil(self.imageData),
self.onNewBrightnessContrast,
parent=self,
)
brightness, contrast = self.brightnessContrast_values.get(
self.filename, (None, None)
......
......@@ -6,7 +6,9 @@ from .image import apply_exif_orientation
from .image import img_arr_to_b64
from .image import img_b64_to_arr
from .image import img_data_to_arr
from .image import img_data_to_pil
from .image import img_data_to_png_data
from .image import img_pil_to_data
from .shape import labelme_shapes_to_label
from .shape import masks_to_bboxes
......
......@@ -7,10 +7,16 @@ import PIL.Image
import PIL.ImageOps
def img_data_to_arr(img_data):
def img_data_to_pil(img_data):
f = io.BytesIO()
f.write(img_data)
img_arr = np.array(PIL.Image.open(f))
img_pil = PIL.Image.open(f)
return img_pil
def img_data_to_arr(img_data):
img_pil = img_data_to_pil(img_data)
img_arr = np.array(img_pil)
return img_arr
......@@ -20,6 +26,13 @@ def img_b64_to_arr(img_b64):
return img_arr
def img_pil_to_data(img_pil):
f = io.BytesIO()
img_pil.save(f, format="PNG")
img_data = f.getvalue()
return img_data
def img_arr_to_b64(img_arr):
img_pil = PIL.Image.fromarray(img_arr)
f = io.BytesIO()
......
import PIL.Image
import PIL.ImageEnhance
from qtpy.QtCore import Qt
from qtpy import QtGui
from qtpy import QtWidgets
from PIL import Image
from PIL import ImageEnhance
from .. import utils
class BrightnessContrastDialog(QtWidgets.QDialog):
def __init__(self, filename, callback, parent=None):
def __init__(self, img, callback, parent=None):
super(BrightnessContrastDialog, self).__init__(parent)
self.setModal(True)
self.setWindowTitle("Brightness/Contrast")
......@@ -20,26 +21,25 @@ class BrightnessContrastDialog(QtWidgets.QDialog):
formLayout.addRow(self.tr("Contrast"), self.slider_contrast)
self.setLayout(formLayout)
self.img = Image.open(filename).convert("RGBA")
assert isinstance(img, PIL.Image.Image)
self.img = img
self.callback = callback
def onNewValue(self, value):
brightness = self.slider_brightness.value() / 100.0
contrast = self.slider_contrast.value() / 100.0
brightness = self.slider_brightness.value() / 50.0
contrast = self.slider_contrast.value() / 50.0
img = self.img
img = ImageEnhance.Brightness(img).enhance(brightness)
img = ImageEnhance.Contrast(img).enhance(contrast)
img = PIL.ImageEnhance.Brightness(img).enhance(brightness)
img = PIL.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()
img_data = utils.img_pil_to_data(img)
qimage = QtGui.QImage.fromData(img_data)
self.callback(qimage)
def _create_slider(self):
slider = QtWidgets.QSlider(Qt.Horizontal)
slider.setRange(0, 300)
slider.setValue(100)
slider.setRange(0, 150)
slider.setValue(50)
slider.valueChanged.connect(self.onNewValue)
return slider
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册