Skip to content

Commit

Permalink
Merge pull request #147 from radarhere/use-ptr
Browse files Browse the repository at this point in the history
Use getim()
  • Loading branch information
homm authored Sep 22, 2024
2 parents af521a1 + 9f409e8 commit 87414b3
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 11 deletions.
12 changes: 6 additions & 6 deletions Tests/test_imagemorph.py
Original file line number Diff line number Diff line change
Expand Up @@ -324,17 +324,17 @@ def test_set_lut() -> None:

def test_wrong_mode() -> None:
lut = ImageMorph.LutBuilder(op_name="corner").build_lut()
imrgb = Image.new("RGB", (10, 10))
iml = Image.new("L", (10, 10))
imrgb_ptr = Image.new("RGB", (10, 10)).getim()
iml_ptr = Image.new("L", (10, 10)).getim()

with pytest.raises(RuntimeError):
_imagingmorph.apply(bytes(lut), imrgb.getim(), iml.getim())
_imagingmorph.apply(bytes(lut), imrgb_ptr, iml_ptr)

with pytest.raises(RuntimeError):
_imagingmorph.apply(bytes(lut), iml.getim(), imrgb.getim())
_imagingmorph.apply(bytes(lut), iml_ptr, imrgb_ptr)

with pytest.raises(RuntimeError):
_imagingmorph.match(bytes(lut), imrgb.getim())
_imagingmorph.match(bytes(lut), imrgb_ptr)

# Should not raise
_imagingmorph.match(bytes(lut), iml.getim())
_imagingmorph.match(bytes(lut), iml_ptr)
10 changes: 10 additions & 0 deletions docs/releasenotes/11.0.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,16 @@ vulnerability introduced in FreeType 2.6 (:cve:`2020-15999`).

.. _2.10.4: https://sourceforge.net/projects/freetype/files/freetype2/2.10.4/

Get Internal Pointers to Objects
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. deprecated:: 11.0.0

``Image.core.ImagingCore.id`` and ``Image.core.ImagingCore.unsafe_ptrs`` have been
deprecated and will be removed in Pillow 12 (2025-10-15). They were used for obtaining
raw pointers to ``ImagingCore`` internals. To interact with C code, you can use
``Image.Image.getim()``, which returns a ``Capsule`` object.

ICNS (width, height, scale) sizes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Expand Down
9 changes: 4 additions & 5 deletions src/PIL/ImageTk.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,15 +176,14 @@ def paste(self, im: Image.Image) -> None:
the bitmap image.
"""
# convert to blittable
im.load()
ptr = im.getim()
image = im.im
if image.isblock() and im.mode == self.__mode:
block = image
else:
if not image.isblock() or im.mode != self.__mode:
block = Image.core.new_block(self.__mode, im.size)
image.convert2(block, image) # convert directly between buffers
ptr = block.ptr

_pyimagingtkcall("PyImagingPhoto", self.__photo, block.ptr)
_pyimagingtkcall("PyImagingPhoto", self.__photo, ptr)


# --------------------------------------------------------------------
Expand Down

0 comments on commit 87414b3

Please sign in to comment.