mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-25 17:36:18 +03:00
Merge pull request #7891 from radarhere/kmeans
Raise ValueError if kmeans is negative
This commit is contained in:
commit
759630fbaf
|
@ -94,6 +94,19 @@ def test_quantize_dither_diff() -> None:
|
||||||
assert dither.tobytes() != nodither.tobytes()
|
assert dither.tobytes() != nodither.tobytes()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"method", (Image.Quantize.MEDIANCUT, Image.Quantize.MAXCOVERAGE)
|
||||||
|
)
|
||||||
|
def test_quantize_kmeans(method) -> None:
|
||||||
|
im = hopper()
|
||||||
|
no_kmeans = im.quantize(kmeans=0, method=method)
|
||||||
|
kmeans = im.quantize(kmeans=1, method=method)
|
||||||
|
assert kmeans.tobytes() != no_kmeans.tobytes()
|
||||||
|
|
||||||
|
with pytest.raises(ValueError):
|
||||||
|
im.quantize(kmeans=-1, method=method)
|
||||||
|
|
||||||
|
|
||||||
def test_colors() -> None:
|
def test_colors() -> None:
|
||||||
im = hopper()
|
im = hopper()
|
||||||
colors = 2
|
colors = 2
|
||||||
|
|
|
@ -1141,7 +1141,7 @@ class Image:
|
||||||
The exception to this is RGBA images. :data:`Quantize.MEDIANCUT`
|
The exception to this is RGBA images. :data:`Quantize.MEDIANCUT`
|
||||||
and :data:`Quantize.MAXCOVERAGE` do not support RGBA images, so
|
and :data:`Quantize.MAXCOVERAGE` do not support RGBA images, so
|
||||||
:data:`Quantize.FASTOCTREE` is used by default instead.
|
:data:`Quantize.FASTOCTREE` is used by default instead.
|
||||||
:param kmeans: Integer
|
:param kmeans: Integer greater than or equal to zero.
|
||||||
:param palette: Quantize to the palette of given
|
:param palette: Quantize to the palette of given
|
||||||
:py:class:`PIL.Image.Image`.
|
:py:class:`PIL.Image.Image`.
|
||||||
:param dither: Dithering method, used when converting from
|
:param dither: Dithering method, used when converting from
|
||||||
|
@ -1184,6 +1184,10 @@ class Image:
|
||||||
new_im.palette = palette.palette.copy()
|
new_im.palette = palette.palette.copy()
|
||||||
return new_im
|
return new_im
|
||||||
|
|
||||||
|
if kmeans < 0:
|
||||||
|
msg = "kmeans must not be negative"
|
||||||
|
raise ValueError(msg)
|
||||||
|
|
||||||
im = self._new(self.im.quantize(colors, method, kmeans))
|
im = self._new(self.im.quantize(colors, method, kmeans))
|
||||||
|
|
||||||
from . import ImagePalette
|
from . import ImagePalette
|
||||||
|
|
|
@ -1471,7 +1471,7 @@ quantize(
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
timer = clock();
|
timer = clock();
|
||||||
#endif
|
#endif
|
||||||
if (kmeans) {
|
if (kmeans > 0) {
|
||||||
k_means(pixelData, nPixels, p, nPaletteEntries, qp, kmeans - 1);
|
k_means(pixelData, nPixels, p, nPaletteEntries, qp, kmeans - 1);
|
||||||
}
|
}
|
||||||
#ifndef NO_OUTPUT
|
#ifndef NO_OUTPUT
|
||||||
|
@ -1627,7 +1627,7 @@ quantize2(
|
||||||
pixelData, nPixels, p, nQuantPixels, avgDist, avgDistSortKey, qp)) {
|
pixelData, nPixels, p, nQuantPixels, avgDist, avgDistSortKey, qp)) {
|
||||||
goto error_4;
|
goto error_4;
|
||||||
}
|
}
|
||||||
if (kmeans) {
|
if (kmeans > 0) {
|
||||||
k_means(pixelData, nPixels, p, nQuantPixels, qp, kmeans - 1);
|
k_means(pixelData, nPixels, p, nQuantPixels, qp, kmeans - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user