This commit is contained in:
user 2025-03-08 06:53:20 +01:00
parent 0befd1d9bd
commit c89005aed0
2 changed files with 15 additions and 10 deletions

View File

@ -2,19 +2,21 @@ import math
import random import random
import re, time, datetime import re, time, datetime
import numpy import numpy
import io
import cv2 import cv2
from PIL import Image from PIL import Image
from pathlib import Path from pathlib import Path
import gmic import gmic
import json import json
from skimage.color import rgb2lab, rgba2rgb from skimage.color import rgb2lab, rgba2rgb
import qimage2ndarray
from PyQt5.QtCore import Qt, pyqtSignal, QEvent from PyQt5.QtCore import Qt, pyqtSignal, QEvent, QBuffer
from PyQt5.QtGui import QImage, QPainter, QPixmap, QIcon, QInputEvent, QTabletEvent, QMouseEvent, \ from PyQt5.QtGui import QImage, QPainter, QPixmap, QIcon, QInputEvent, QTabletEvent, QMouseEvent, \
QHelpEvent, QPaintEvent, QTransform QHelpEvent, QPaintEvent, QTransform, QPixelFormat
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QFileDialog, QLabel, QSizePolicy, \ from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QFileDialog, QLabel, QSizePolicy, \
QScrollArea, QAction, QToolButton, QMdiArea, QAbstractScrollArea, QCheckBox, QComboBox, QLineEdit QScrollArea, QAction, QToolButton, QMdiArea, QAbstractScrollArea, QCheckBox, QComboBox, QLineEdit
from PyQt5.QtCore import QTimer from PyQt5.QtCore import QTimer, QByteArray
from krita import Krita, DockWidget, DockWidgetFactory, DockWidgetFactoryBase, Extension from krita import Krita, DockWidget, DockWidgetFactory, DockWidgetFactoryBase, Extension
from .util import dump_tablet_event, dump_mouse_event, get_qview, rgb2hsv from .util import dump_tablet_event, dump_mouse_event, get_qview, rgb2hsv
@ -405,7 +407,7 @@ class CustomPreview(DockWidget):
if mirror: if mirror:
previewImage = doc.projection(int(((doc.width()) - o_w - c_x)), c_y, int(kis_canvas_controller.width() * factor), o_h) previewImage = doc.projection(int(((doc.width()) - o_w - c_x)), c_y, int(kis_canvas_controller.width() * factor), o_h)
else: else:
previewImage = doc.projection(c_x, c_y, o_w, o_h) previewImage = doc.projection(c_x, c_y, o_w, o_h) # type: QBuffer
# previewImage = doc.projection(c_x, c_y if canvas.rotation() != 180 else int(((doc.height()) - o_h - c_y)), o_w, o_h) # previewImage = doc.projection(c_x, c_y if canvas.rotation() != 180 else int(((doc.height()) - o_h - c_y)), o_w, o_h)
# pprint(("flipped:", self.flipped, "locked:", self.locked, "canvas.mirror:", mirror)) # pprint(("flipped:", self.flipped, "locked:", self.locked, "canvas.mirror:", mirror))
# pprint(("o_w:", o_w, "o_h:", o_h, "c_x", c_x, "c_y", c_y)) # pprint(("o_w:", o_w, "o_h:", o_h, "c_x", c_x, "c_y", c_y))
@ -425,8 +427,10 @@ class CustomPreview(DockWidget):
choice = self.dropdown.currentText() choice = self.dropdown.currentText()
data = self.dropdown.currentData() data = self.dropdown.currentData()
if choice != "Normal": if choice != "Normal":
buffer = QBuffer()
im = Image.fromqimage(previewImage) buffer.open(QBuffer.ReadWrite)
previewImage.save(buffer, "PNG")
im = Image.open(io.BytesIO(buffer.data()))
num_im = numpy.array(im) num_im = numpy.array(im)
if choice == "NTSC": if choice == "NTSC":
@ -490,9 +494,9 @@ class CustomPreview(DockWidget):
ref = g.to_numpy_helper(astype=numpy.uint8, interleave=True, squeeze_shape=True) ref = g.to_numpy_helper(astype=numpy.uint8, interleave=True, squeeze_shape=True)
ref = numpy.swapaxes(ref, 0, 1) ref = numpy.swapaxes(ref, 0, 1)
img = Image.fromarray(ref) qimg = qimage2ndarray.array2qimage(ref)
qimg = img.toqimage() qimg.scaled(width, height)
qimg.scaled(width, height, Qt.KeepAspectRatio, Qt.SmoothTransformation)
previewImage = qimg previewImage = qimg
resultImage = qimg.convertToFormat(QImage.Format_ARGB32_Premultiplied) resultImage = qimg.convertToFormat(QImage.Format_ARGB32_Premultiplied)
resultImage.fill(0) resultImage.fill(0)

View File

@ -3,3 +3,4 @@ gmic==2.9.4-a1
scikit-image==0.25.2 scikit-image==0.25.2
numpy==2.2.3 numpy==2.2.3
pillow==11.1.0 pillow==11.1.0
qimage2ndarray==1.10.0