示例#1
0
 def test_load_fails_with_no_header_data(self):
     file = BytesIO(b"some initial binary data: \x00\x01")
     try:
         pnm.load(
             file, b"P1", bitmap=Bitmap_C_Interface, palette=Palette_C_Interface
         )
         self.fail("should have failed")
     except Exception as caught_exception:
         if "Unsupported image format" not in str(caught_exception):
             raise
    def test_load_works_p3_ascii(self):
        test_file = os.path.join(
            os.path.dirname(__file__),
            "..",
            "examples",
            "images",
            "netpbm_p3_rgb_ascii.ppm",
        )
        with open(test_file, "rb") as file:
            bitmap, palette = pnm.load(
                file,
                b"P3",
                bitmap=Bitmap_C_Interface,
                palette=Palette_C_Interface
            )  # type: Bitmap_C_Interface, Palette_C_Interface

        self.assertTrue(isinstance(palette, Palette_C_Interface))
        self.assertEqual(6, palette.num_colors)
        palette.validate()
        # self.fail(str(palette))
        self.assertTrue(isinstance(bitmap, Bitmap_C_Interface), bitmap)
        self.assertEqual(6, bitmap.colors)
        self.assertEqual(16, bitmap.width)
        self.assertEqual(16, bitmap.height)
        bitmap.validate()
示例#3
0
 def test_load_works_p4_in_mem(self):
     file = BytesIO(b"P4\n4 2\n\x55")
     bitmap, palette = pnm.load(
         file, b"P4", bitmap=Bitmap_C_Interface, palette=Palette_C_Interface
     )
     self.assertEqual(4, bitmap.width)
     self.assertEqual(2, bitmap.height)
     bitmap.validate()
     self.assertEqual("\n   0   1   0   1\n   0   1   0   1\n", str(bitmap))
     palette.validate()
示例#4
0
 def test_load_works_p4_binary_high_res(self):
     test_file = os.path.join(
         os.path.dirname(__file__),
         "..",
         "examples",
         "images",
         "netpbm_p4_mono_large.pbm",
     )
     with open(test_file, "rb") as file:
         bitmap, palette = pnm.load(
             file, b"P4", bitmap=Bitmap_C_Interface, palette=Palette_C_Interface
         )
     self.assertTrue(isinstance(bitmap, Bitmap_C_Interface))
     self.assertEqual(1, bitmap.colors)
     self.assertEqual(320, bitmap.width)
     self.assertEqual(240, bitmap.height)
     bitmap.validate()
     self.assertEqual(1, palette.num_colors)
     palette.validate()
    def test_load_works_p5_binary(self):
        test_file = os.path.join(
            os.path.dirname(__file__),
            "..",
            "examples",
            "images",
            "netpbm_p5_binary.pgm",
        )
        with open(test_file, "rb") as file:
            bitmap, palette = pnm.load(file,
                                       b"P5",
                                       bitmap=Bitmap_C_Interface,
                                       palette=Palette_C_Interface)
        self.assertTrue(isinstance(bitmap, Bitmap_C_Interface), bitmap)

        self.assertEqual(8, palette.num_colors)
        palette.validate()
        self.assertEqual(8, bitmap.colors)
        self.assertEqual(8, bitmap.width)
        self.assertEqual(8, bitmap.height)
        bitmap.validate()
示例#6
0
    def test_load_works_p1_ascii(self):
        test_file = os.path.join(
            os.path.dirname(__file__),
            "..",
            "examples",
            "images",
            "netpbm_p1_mono_ascii.pbm",
        )
        with open(test_file, "rb") as file:
            bitmap, palette = pnm.load(
                file, b"P1", bitmap=Bitmap_C_Interface, palette=Palette_C_Interface
            )
        self.assertTrue(isinstance(bitmap, Bitmap_C_Interface), bitmap)
        self.assertEqual(1, bitmap.colors)
        self.assertEqual(13, bitmap.width)
        self.assertEqual(21, bitmap.height)

        bitmap.validate()
        self.assertEqual(0, bitmap[0])  # check first row
        self.assertEqual(1, bitmap[11, 1])  # check second row

        self.assertEqual(1, palette.num_colors)
        palette.validate()