JasonS09 / comfy_sd_krita_plugin

Make AI art between canvas and nodes with Krita.
MIT License
148 stars 7 forks source link

Inpaint errors #7

Closed notfood closed 1 year ago

notfood commented 1 year ago

Inpaint fails with a python error.

To Reproduce

  1. Go to inpaint tab
  2. Configure
  3. Generate
  4. See error

Screenshots image

TypeError
Python 3.11.3: /usr/bin/python3
Sun Jul 30 02:06:29 2023

A problem occurred in a Python script.  Here is the sequence of
function calls leading up to the error, in the order they occurred.

 /media/Makai/home/.local/share/krita/pykrita/krita_comfy/pages/inpaint.py in <lambda>()
   60         self.invert_mask.cfg_connect()
   61 
   62         self.btn.released.connect(lambda: script.action_inpaint())
   63         self.get_workflow_btn.released.connect(
   64             lambda: get_workflow(script.cfg, script.action_get_workflow, "inpaint")
self undefined
global script = <krita_comfy.script.Script object>
script.action_inpaint = <bound method Script.action_inpaint of <krita_comfy.script.Script object>>

 /media/Makai/home/.local/share/krita/pykrita/krita_comfy/script.py in action_inpaint(self=<krita_comfy.script.Script object>)
  579             return
  580         self.adjust_selection()
  581         self.apply_img2img(True)
  582 
  583     def action_simple_upscale(self):
self = <krita_comfy.script.Script object>
self.apply_img2img = <bound method Script.apply_img2img of <krita_comfy.script.Script object>>

 /media/Makai/home/.local/share/krita/pykrita/krita_comfy/script.py in apply_img2img(self=<krita_comfy.script.Script object>, is_inpaint=True)
  349             # auto-hide mask layer before getting selection image
  350             self.node.setVisible(False)
  351             self.inpaint_transparency_mask_inserter(glayer, transparency_mask)
  352             self.doc.refreshProjection()
  353 
self = <krita_comfy.script.Script object>
self.inpaint_transparency_mask_inserter = <bound method Script.inpaint_transparency_mask_inserter of <krita_comfy.script.Script object>>
glayer = <PyKrita.krita.GroupLayer object>
transparency_mask = <PyQt5.QtGui.QImage object>

 /media/Makai/home/.local/share/krita/pykrita/krita_comfy/script.py in inpaint_transparency_mask_inserter(self=<krita_comfy.script.Script object>, glayer=<PyKrita.krita.GroupLayer object>, transparency_mask=<PyQt5.QtGui.QImage object>)
  385         mh = gray_mask.height()
  386         # crop mask to the actual selection size
  387         crop_rect = QRect((mw - sw)/2,(mh - sh)/2, sw, sh)
  388         crop_mask = gray_mask.copy(crop_rect)
  389 
crop_rect undefined
global QRect = <class 'PyQt5.QtCore.QRect'>
mw = 295
sw = 278
mh = 236
sh = 233
TypeError: arguments did not match any overloaded call:
  QRect(): too many arguments
  QRect(aleft: int, atop: int, awidth: int, aheight: int): argument 1 has unexpected type 'float'
  QRect(atopLeft: QPoint, abottomRight: QPoint): argument 1 has unexpected type 'float'
  QRect(atopLeft: QPoint, asize: QSize): argument 1 has unexpected type 'float'
  QRect(a0: QRect): argument 1 has unexpected type 'float'
    __cause__ = None
    __class__ = <class 'TypeError'>
    __context__ = None
    __delattr__ = <method-wrapper '__delattr__' of TypeError object>
    __dict__ = {}
    __dir__ = <built-in method __dir__ of TypeError object>
    __doc__ = 'Inappropriate argument type.'
    __eq__ = <method-wrapper '__eq__' of TypeError object>
    __format__ = <built-in method __format__ of TypeError object>
    __ge__ = <method-wrapper '__ge__' of TypeError object>
    __getattribute__ = <method-wrapper '__getattribute__' of TypeError object>
    __getstate__ = <built-in method __getstate__ of TypeError object>
    __gt__ = <method-wrapper '__gt__' of TypeError object>
    __hash__ = <method-wrapper '__hash__' of TypeError object>
    __init__ = <method-wrapper '__init__' of TypeError object>
    __init_subclass__ = <built-in method __init_subclass__ of type object>
    __le__ = <method-wrapper '__le__' of TypeError object>
    __lt__ = <method-wrapper '__lt__' of TypeError object>
    __ne__ = <method-wrapper '__ne__' of TypeError object>
    __new__ = <built-in method __new__ of type object>
    __reduce__ = <built-in method __reduce__ of TypeError object>
    __reduce_ex__ = <built-in method __reduce_ex__ of TypeError object>
    __repr__ = <method-wrapper '__repr__' of TypeError object>
    __setattr__ = <method-wrapper '__setattr__' of TypeError object>
    __setstate__ = <built-in method __setstate__ of TypeError object>
    __sizeof__ = <built-in method __sizeof__ of TypeError object>
    __str__ = <method-wrapper '__str__' of TypeError object>
    __subclasshook__ = <built-in method __subclasshook__ of type object>
    __suppress_context__ = False
    __traceback__ = <traceback object>
    add_note = <built-in method add_note of TypeError object>
    args = ("arguments did not match any overloaded call:\n  Q...0: QRect): argument 1 has unexpected type 'float'",)
    with_traceback = <built-in method with_traceback of TypeError object>

The above is a description of an error in a Python program.  Here is
the original traceback:

Traceback (most recent call last):
  File "/media/Makai/home/.local/share/krita/pykrita/krita_comfy/pages/inpaint.py", line 62, in <lambda>
    self.btn.released.connect(lambda: script.action_inpaint())
                                      ^^^^^^^^^^^^^^^^^^^^^^^
  File "/media/Makai/home/.local/share/krita/pykrita/krita_comfy/script.py", line 581, in action_inpaint
    self.apply_img2img(True)
  File "/media/Makai/home/.local/share/krita/pykrita/krita_comfy/script.py", line 351, in apply_img2img
    self.inpaint_transparency_mask_inserter(glayer, transparency_mask)
  File "/media/Makai/home/.local/share/krita/pykrita/krita_comfy/script.py", line 387, in inpaint_transparency_mask_inserter
    crop_rect = QRect((mw - sw)/2,(mh - sh)/2, sw, sh)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: arguments did not match any overloaded call:
  QRect(): too many arguments
  QRect(aleft: int, atop: int, awidth: int, aheight: int): argument 1 has unexpected type 'float'
  QRect(atopLeft: QPoint, abottomRight: QPoint): argument 1 has unexpected type 'float'
  QRect(atopLeft: QPoint, asize: QSize): argument 1 has unexpected type 'float'
  QRect(a0: QRect): argument 1 has unexpected type 'float'

Desktop (please complete the following information):

JasonS09 commented 1 year ago

I pushed some changes, can you try again?

notfood commented 1 year ago

A different error but similar image

TypeError
Python 3.11.3: /usr/bin/python3
Sun Jul 30 11:41:02 2023

A problem occurred in a Python script.  Here is the sequence of
function calls leading up to the error, in the order they occurred.

 /media/Makai/home/.local/share/krita/pykrita/krita_comfy/pages/inpaint.py in <lambda>()
   60         self.invert_mask.cfg_connect()
   61 
   62         self.btn.released.connect(lambda: script.action_inpaint())
   63         self.get_workflow_btn.released.connect(
   64             lambda: get_workflow(script.cfg, script.action_get_workflow, "inpaint")
self undefined
global script = <krita_comfy.script.Script object>
script.action_inpaint = <bound method Script.action_inpaint of <krita_comfy.script.Script object>>

 /media/Makai/home/.local/share/krita/pykrita/krita_comfy/script.py in action_inpaint(self=<krita_comfy.script.Script object>)
  579             return
  580         self.adjust_selection()
  581         self.apply_img2img(True)
  582 
  583     def action_simple_upscale(self):
self = <krita_comfy.script.Script object>
self.apply_img2img = <bound method Script.apply_img2img of <krita_comfy.script.Script object>>

 /media/Makai/home/.local/share/krita/pykrita/krita_comfy/script.py in apply_img2img(self=<krita_comfy.script.Script object>, is_inpaint=True)
  349             # auto-hide mask layer before getting selection image
  350             self.node.setVisible(False)
  351             self.inpaint_transparency_mask_inserter(glayer, transparency_mask)
  352             self.doc.refreshProjection()
  353 
self = <krita_comfy.script.Script object>
self.inpaint_transparency_mask_inserter = <bound method Script.inpaint_transparency_mask_inserter of <krita_comfy.script.Script object>>
glayer = <PyKrita.krita.GroupLayer object>
transparency_mask = <PyQt5.QtGui.QImage object>

 /media/Makai/home/.local/share/krita/pykrita/krita_comfy/script.py in inpaint_transparency_mask_inserter(self=<krita_comfy.script.Script object>, glayer=<PyKrita.krita.GroupLayer object>, transparency_mask=<PyQt5.QtGui.QImage object>)
  395 
  396         mask_selection = Selection()
  397         mask_selection.setPixelData(mask_ba, sx, sy, w, h)
  398 
  399         def apply_mask_when_ready():
mask_selection = <PyKrita.krita.Selection object>
mask_selection.setPixelData = <built-in method setPixelData of Selection object>
mask_ba = PyQt5.QtCore.QByteArray(b'\xff\xff\xff\xff\xff\x...ff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00<')
sx = 383
sy = 310
w = 168
h = 124.0
TypeError: setPixelData(self, value: Union[QByteArray, bytes, bytearray], x: int, y: int, w: int, h: int): argument 5 has unexpected type 'float'
    __cause__ = None
    __class__ = <class 'TypeError'>
    __context__ = None
    __delattr__ = <method-wrapper '__delattr__' of TypeError object>
    __dict__ = {}
    __dir__ = <built-in method __dir__ of TypeError object>
    __doc__ = 'Inappropriate argument type.'
    __eq__ = <method-wrapper '__eq__' of TypeError object>
    __format__ = <built-in method __format__ of TypeError object>
    __ge__ = <method-wrapper '__ge__' of TypeError object>
    __getattribute__ = <method-wrapper '__getattribute__' of TypeError object>
    __getstate__ = <built-in method __getstate__ of TypeError object>
    __gt__ = <method-wrapper '__gt__' of TypeError object>
    __hash__ = <method-wrapper '__hash__' of TypeError object>
    __init__ = <method-wrapper '__init__' of TypeError object>
    __init_subclass__ = <built-in method __init_subclass__ of type object>
    __le__ = <method-wrapper '__le__' of TypeError object>
    __lt__ = <method-wrapper '__lt__' of TypeError object>
    __ne__ = <method-wrapper '__ne__' of TypeError object>
    __new__ = <built-in method __new__ of type object>
    __reduce__ = <built-in method __reduce__ of TypeError object>
    __reduce_ex__ = <built-in method __reduce_ex__ of TypeError object>
    __repr__ = <method-wrapper '__repr__' of TypeError object>
    __setattr__ = <method-wrapper '__setattr__' of TypeError object>
    __setstate__ = <built-in method __setstate__ of TypeError object>
    __sizeof__ = <built-in method __sizeof__ of TypeError object>
    __str__ = <method-wrapper '__str__' of TypeError object>
    __subclasshook__ = <built-in method __subclasshook__ of type object>
    __suppress_context__ = False
    __traceback__ = <traceback object>
    add_note = <built-in method add_note of TypeError object>
    args = ("setPixelData(self, value: Union[QByteArray, byte..., h: int): argument 5 has unexpected type 'float'",)
    with_traceback = <built-in method with_traceback of TypeError object>

The above is a description of an error in a Python program.  Here is
the original traceback:

Traceback (most recent call last):
  File "/media/Makai/home/.local/share/krita/pykrita/krita_comfy/pages/inpaint.py", line 62, in <lambda>
    self.btn.released.connect(lambda: script.action_inpaint())
                                      ^^^^^^^^^^^^^^^^^^^^^^^
  File "/media/Makai/home/.local/share/krita/pykrita/krita_comfy/script.py", line 581, in action_inpaint
    self.apply_img2img(True)
  File "/media/Makai/home/.local/share/krita/pykrita/krita_comfy/script.py", line 351, in apply_img2img
    self.inpaint_transparency_mask_inserter(glayer, transparency_mask)
  File "/media/Makai/home/.local/share/krita/pykrita/krita_comfy/script.py", line 397, in inpaint_transparency_mask_inserter
    mask_selection.setPixelData(mask_ba, sx, sy, w, h)
TypeError: setPixelData(self, value: Union[QByteArray, bytes, bytearray], x: int, y: int, w: int, h: int): argument 5 has unexpected type 'float'
JasonS09 commented 1 year ago

Take a look now.

notfood commented 1 year ago

Works correctly now. Thanks!