Пример #1
0
 def test_process_tile_two_colors(self):
     expected_dot_profile = bytearray(([0] * 4 + [1] * 8 + [0] * 4) * 4)
     img = Image.open('testdata/blue-and-red-tile.png')
     processor = image_processor.ImageProcessor()
     processor.load_image(img)
     (color_needs, dot_profile) = processor.process_tile(0, 0, 0, 0)
     self.assertEqual(color_needs, bytearray([2, 7, 0xff, 0xff]))
     self.assertEqual(dot_profile, expected_dot_profile)
     img = Image.open('testdata/red-and-blue-tile.png')
     processor = image_processor.ImageProcessor()
     processor.load_image(img)
     (color_needs, dot_profile) = processor.process_tile(0, 0, 0, 0)
     self.assertEqual(color_needs, bytearray([7, 2, 0xff, 0xff]))
     self.assertEqual(dot_profile, expected_dot_profile)
Пример #2
0
 def process_image(self,
                   img,
                   palette_text=None,
                   auto_sprite_bg=False,
                   traversal=None):
     if 'free' in self.args.traversal:
         self.processor = free_sprite_processor.FreeSpriteProcessor(
             self.args.traversal)
         self.processor.set_verbose('--verbose' in sys.argv)
         self.processor.process_image(img, palette_text,
                                      self.args.bg_color.mask,
                                      self.args.bg_color.fill,
                                      self.args.is_locked_tiles,
                                      self.args.lock_sprite_flips,
                                      self.args.allow_overflow)
     elif self.args.traversal == '8x16':
         self.processor = eight_by_sixteen_processor.EightBySixteenProcessor(
         )
         self.processor.process_image(
             img, palette_text, self.args.bg_color.mask,
             self.args.bg_color.fill, self.args.traversal,
             self.args.is_sprite, self.args.is_locked_tiles,
             self.args.lock_sprite_flips, self.args.allow_overflow)
     else:
         self.processor = image_processor.ImageProcessor()
         if auto_sprite_bg:
             self.processor._test_only_auto_sprite_bg = auto_sprite_bg
         self.processor.process_image(
             img, palette_text, self.args.bg_color.mask,
             self.args.bg_color.fill, self.args.traversal,
             self.args.is_sprite, self.args.is_locked_tiles,
             self.args.lock_sprite_flips, self.args.allow_overflow)
     self.ppu_memory = self.processor.ppu_memory()
     self.err = self.processor.err()
Пример #3
0
 def test_process_tile_solid(self):
     img = Image.open('testdata/blue-tile.png')
     processor = image_processor.ImageProcessor()
     processor.load_image(img)
     (color_needs, dot_profile) = processor.process_tile(0, 0, 0, 0)
     self.assertEqual(color_needs, bytearray([2, 0xff, 0xff, 0xff]))
     self.assertEqual(dot_profile, bytearray([0] * 64))
Пример #4
0
 def test_extract_16overuse_bmp(self):
     """Extract a palette from a 16-color indexed bmp with 8bpp."""
     img = Image.open('testdata/full-image-16color-overuse.bmp')
     processor = image_processor.ImageProcessor()
     extractor = extract_indexed_image_palette.ExtractIndexedImagePalette(
         processor)
     pal = extractor.extract_palette(self.imgpal(img))
     self.assertEqual(str(pal),
                      'P/16-30-01-0f/16-30-01-38/16-30-19-28/16-23-23-28/')
Пример #5
0
 def process_image(self, img, palette_text=None, traversal=None):
     if not traversal:
         traversal = 'horizontal'
     self.processor = image_processor.ImageProcessor()
     self.processor.process_image(
         img, palette_text, self.args.bg_color.mask,
         self.args.bg_color.fill, traversal, self.args.is_sprite,
         self.args.is_locked_tiles, self.args.lock_sprite_flips,
         self.args.allow_overflow)
     self.ppu_memory = self.processor.ppu_memory()
Пример #6
0
 def test_wrapped_64_bytes_png(self):
     processor = image_processor.ImageProcessor()
     extractor = extract_indexed_image_palette.ExtractIndexedImagePalette(
         processor)
     bytes = [
         252, 56, 0, 0, 255, 255, 255, 1, 0, 0, 252, 2, 0, 0, 0, 3, 252, 56,
         0, 4, 255, 255, 255, 5, 0, 0, 252, 6, 252, 216, 132, 8, 252, 56, 0,
         8, 255, 255, 255, 9, 0, 184, 0, 10, 248, 184, 0, 11, 252, 56, 0,
         12, 173, 145, 249, 13, 173, 145, 249, 14, 248, 184, 0, 15
     ]
     pal = extractor.extract_palette(MockWrappedImagePalette(bytes, 'PNG'))
     self.assertEqual(str(pal),
                      'P/16-30-01-0f/16-30-01-38/16-30-19-28/16-23-23-28/')
Пример #7
0
 def test_wrapped_48_bytes_bmp(self):
     processor = image_processor.ImageProcessor()
     extractor = extract_indexed_image_palette.ExtractIndexedImagePalette(
         processor)
     bytes = [
         0, 56, 252, 255, 255, 255, 252, 0, 0, 0, 0, 0, 0, 56, 252, 255,
         255, 255, 252, 0, 0, 132, 216, 252, 0, 56, 252, 255, 255, 255, 0,
         184, 0, 0, 184, 248, 0, 56, 252, 249, 145, 173, 249, 145, 173, 0,
         184, 248
     ]
     pal = extractor.extract_palette(MockWrappedImagePalette(bytes, 'BMP'))
     self.assertEqual(str(pal),
                      'P/16-30-01-0f/16-30-01-38/16-30-19-28/16-23-23-28/')
Пример #8
0
 def test_process_tile_all_four_colors(self):
     img = Image.open('testdata/gradiant-tile.png')
     processor = image_processor.ImageProcessor()
     processor.load_image(img)
     (color_needs, dot_profile) = processor.process_tile(0, 0, 0, 0)
     self.assertEqual(color_needs, bytearray([2, 0x21, 0x2a, 0x0b]))
     self.assertEqual(
         dot_profile,
         bytearray([
             0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 2, 0, 0, 1, 1, 1,
             1, 2, 2, 0, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1,
             1, 2, 2, 2, 2, 3, 1, 1, 2, 2, 2, 2, 3, 3, 1, 2, 2, 2, 2, 3, 3,
             3
         ]))
Пример #9
0
 def test_process_tile_error_palette_overflow(self):
     img = Image.open('testdata/palette-overflow-tile.png')
     processor = image_processor.ImageProcessor()
     processor.load_image(img)
     with self.assertRaises(errors.PaletteOverflowError):
         processor.process_tile(0, 0, 0, 0)
Пример #10
0
 def test_process_tile_error_color_not_allowed(self):
     img = Image.open('testdata/color-not-allowed-tile.png')
     processor = image_processor.ImageProcessor()
     processor.load_image(img)
     with self.assertRaises(errors.ColorNotAllowedError):
         processor.process_tile(0, 0, 0, 0)