102 lines
2.7 KiB
Python
102 lines
2.7 KiB
Python
# vim: set fileencoding=utf-8 :
|
|
import pytest
|
|
|
|
import pyvips
|
|
|
|
|
|
class TestDraw:
|
|
def test_draw_circle(self):
|
|
im = pyvips.Image.black(100, 100)
|
|
im = im.draw_circle(100, 50, 50, 25)
|
|
pixel = im(25, 50)
|
|
assert len(pixel) == 1
|
|
assert pixel[0] == 100
|
|
pixel = im(26, 50)
|
|
assert len(pixel) == 1
|
|
assert pixel[0] == 0
|
|
|
|
im = pyvips.Image.black(100, 100)
|
|
im = im.draw_circle(100, 50, 50, 25, fill=True)
|
|
pixel = im(25, 50)
|
|
assert len(pixel) == 1
|
|
assert pixel[0] == 100
|
|
pixel = im(26, 50)
|
|
assert pixel[0] == 100
|
|
pixel = im(24, 50)
|
|
assert pixel[0] == 0
|
|
|
|
def test_draw_flood(self):
|
|
im = pyvips.Image.black(100, 100)
|
|
im = im.draw_circle(100, 50, 50, 25)
|
|
im = im.draw_flood(100, 50, 50)
|
|
|
|
im2 = pyvips.Image.black(100, 100)
|
|
im2 = im2.draw_circle(100, 50, 50, 25, fill=True)
|
|
|
|
diff = (im - im2).abs().max()
|
|
assert diff == 0
|
|
|
|
def test_draw_image(self):
|
|
im = pyvips.Image.black(51, 51)
|
|
im = im.draw_circle(100, 25, 25, 25, fill=True)
|
|
|
|
im2 = pyvips.Image.black(100, 100)
|
|
im2 = im2.draw_image(im, 25, 25)
|
|
|
|
im3 = pyvips.Image.black(100, 100)
|
|
im3 = im3.draw_circle(100, 50, 50, 25, fill=True)
|
|
|
|
diff = (im2 - im3).abs().max()
|
|
assert diff == 0
|
|
|
|
def test_draw_line(self):
|
|
im = pyvips.Image.black(100, 100)
|
|
im = im.draw_line(100, 0, 0, 100, 0)
|
|
pixel = im(0, 0)
|
|
assert len(pixel) == 1
|
|
assert pixel[0] == 100
|
|
pixel = im(0, 1)
|
|
assert len(pixel) == 1
|
|
assert pixel[0] == 0
|
|
|
|
def test_draw_mask(self):
|
|
mask = pyvips.Image.black(51, 51)
|
|
mask = mask.draw_circle(128, 25, 25, 25, fill=True)
|
|
|
|
im = pyvips.Image.black(100, 100)
|
|
im = im.draw_mask(200, mask, 25, 25)
|
|
|
|
im2 = pyvips.Image.black(100, 100)
|
|
im2 = im2.draw_circle(100, 50, 50, 25, fill=True)
|
|
|
|
diff = (im - im2).abs().max()
|
|
assert diff == 0
|
|
|
|
def test_draw_rect(self):
|
|
im = pyvips.Image.black(100, 100)
|
|
im = im.draw_rect(100, 25, 25, 50, 50, fill=True)
|
|
|
|
im2 = pyvips.Image.black(100, 100)
|
|
for y in range(25, 75):
|
|
im2 = im2.draw_line(100, 25, y, 74, y)
|
|
|
|
diff = (im - im2).abs().max()
|
|
assert diff == 0
|
|
|
|
def test_draw_smudge(self):
|
|
im = pyvips.Image.black(100, 100)
|
|
im = im.draw_circle(100, 50, 50, 25, fill=True)
|
|
|
|
im2 = im.draw_smudge(10, 10, 50, 50)
|
|
|
|
im3 = im.crop(10, 10, 50, 50)
|
|
|
|
im4 = im2.draw_image(im3, 10, 10)
|
|
|
|
diff = (im4 - im).abs().max()
|
|
assert diff == 0
|
|
|
|
|
|
if __name__ == '__main__':
|
|
pytest.main()
|