def test_write_rgba(): """ Can we write a RGBA mode file to webp without error. Does it have the bits we expect? """ temp_file = tempfile("temp.webp") pil_image = Image.new("RGBA", (10, 10), (255, 0, 0, 20)) pil_image.save(temp_file) if _webp.WebPDecoderBuggyAlpha(): return image = Image.open(temp_file) image.load() assert_equal(image.mode, "RGBA") assert_equal(image.size, (10, 10)) assert_equal(image.format, "WEBP") assert_no_exception(image.load) assert_no_exception(image.getdata) assert_image_similar(image, pil_image, 1.0)
def test_write_rgba(self): """ Can we write a RGBA mode file to webp without error. Does it have the bits we expect? """ temp_file = self.tempfile("temp.webp") pil_image = Image.new("RGBA", (10, 10), (255, 0, 0, 20)) pil_image.save(temp_file) if _webp.WebPDecoderBuggyAlpha(self): return image = Image.open(temp_file) image.load() self.assertEqual(image.mode, "RGBA") self.assertEqual(image.size, (10, 10)) self.assertEqual(image.format, "WEBP") image.load() image.getdata() # early versions of webp are known to produce higher deviations: # deal with it if _webp.WebPDecoderVersion(self) <= 0x201: self.assert_image_similar(image, pil_image, 3.0) else: self.assert_image_similar(image, pil_image, 1.0)
def setUp(self): try: from PIL import _webp except: self.skipTest('WebP support not installed') if _webp.WebPDecoderBuggyAlpha(self): self.skipTest("Buggy early version of WebP installed, not testing transparency")
def check_webp_transparency(self): self.assertEqual(features.check('transp_webp'), not _webp.WebPDecoderBuggyAlpha()) self.assertEqual(features.check('transp_webp'), _webp.HAVE_TRANSPARENCY)
def test_version(self): _webp.WebPDecoderVersion() _webp.WebPDecoderBuggyAlpha()
def test_version(): assert_no_exception(lambda: _webp.WebPDecoderVersion()) assert_no_exception(lambda: _webp.WebPDecoderBuggyAlpha())
def test_version(self): _webp.WebPDecoderVersion() _webp.WebPDecoderBuggyAlpha() assert re.search(r"\d+\.\d+\.\d+$", features.version_module("webp"))
def test_webp_transparency(): assert features.check("transp_webp") != _webp.WebPDecoderBuggyAlpha() assert features.check("transp_webp") == _webp.HAVE_TRANSPARENCY
print("Pillow", Image.PILLOW_VERSION, "TEST SUMMARY ") print("-" * 68) print("Python modules loaded from", os.path.dirname(Image.__file__)) print("Binary modules loaded from", os.path.dirname(Image.core.__file__)) print("-" * 68) check_module("PIL CORE", "PIL._imaging") check_module("TKINTER", "PIL._imagingtk") check_codec("JPEG", "jpeg") check_codec("ZLIB (PNG/ZIP)", "zip") check_codec("LIBTIFF", "libtiff") check_module("FREETYPE2", "PIL._imagingft") check_module("LITTLECMS2", "PIL._imagingcms") check_module("WEBP", "PIL._webp") try: from PIL import _webp if _webp.WebPDecoderBuggyAlpha(): print("***", "Transparent WEBP", "support not installed") else: print("---", "Transparent WEBP", "support ok") except Exception: pass print("-" * 68) # use doctest to make sure the test program behaves as documented! import doctest import selftest print("Running selftest:") status = doctest.testmod(selftest) if status[0]: print("*** %s tests of %d failed." % status) exit_status = 1
def test_good_alpha(): assert_equal(_webp.WebPDecoderBuggyAlpha(), 0)
def setUp(self): if _webp.WebPDecoderBuggyAlpha(self): self.skipTest( "Buggy early version of WebP installed, not testing transparency" )