diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py
index ee49ed7..aade649 100644
--- a/Lib/lib-tk/Tkinter.py
+++ b/Lib/lib-tk/Tkinter.py
@@ -3282,6 +3282,8 @@
         for k, v in cnf.items():
             if hasattr(v, '__call__'):
                 v = self._register(v)
+            elif k in ('data', 'maskdata'):
+                v = self.tk._createbytearray(v)
             options = options + ('-'+k, v)
         self.tk.call(('image', 'create', imgtype, name,) + options)
         self.name = name
@@ -3305,6 +3307,8 @@
                 if k[-1] == '_': k = k[:-1]
                 if hasattr(v, '__call__'):
                     v = self._register(v)
+                elif k in ('data', 'maskdata'):
+                    v = self.tk._createbytearray(v)
                 res = res + ('-'+k, v)
         self.tk.call((self.name, 'config') + res)
     config = configure
diff --git a/Lib/lib-tk/test/test_tkinter/test_images.py b/Lib/lib-tk/test/test_tkinter/test_images.py
index a27b763..b3c5b75 100644
--- a/Lib/lib-tk/test/test_tkinter/test_images.py
+++ b/Lib/lib-tk/test/test_tkinter/test_images.py
@@ -151,7 +151,8 @@
         self.assertEqual(image.type(), 'photo')
         self.assertEqual(image.width(), 16)
         self.assertEqual(image.height(), 16)
-        self.assertEqual(image['data'], data)
+        self.assertEqual(image['data'], data if self.wantobjects
+                                        else data.decode('latin1'))
         self.assertEqual(image['file'], '')
         self.assertIn('::img::test', self.root.image_names())
         del image
@@ -160,21 +161,18 @@
     def test_create_from_ppm_file(self):
         self.check_create_from_file('ppm')
 
-    @unittest.skip('issue #21580')
     def test_create_from_ppm_data(self):
         self.check_create_from_data('ppm')
 
     def test_create_from_pgm_file(self):
         self.check_create_from_file('pgm')
 
-    @unittest.skip('issue #21580')
     def test_create_from_pgm_data(self):
         self.check_create_from_data('pgm')
 
     def test_create_from_gif_file(self):
         self.check_create_from_file('gif')
 
-    @unittest.skip('issue #21580')
     def test_create_from_gif_data(self):
         self.check_create_from_data('gif')
 
@@ -182,19 +180,18 @@
     def test_create_from_png_file(self):
         self.check_create_from_file('png')
 
-    @unittest.skip('issue #21580')
     @requires_tcl(8, 6)
     def test_create_from_png_data(self):
         self.check_create_from_data('png')
 
-    @unittest.skip('issue #21580')
     def test_configure_data(self):
         image = tkinter.PhotoImage('::img::test', master=self.root)
         self.assertEqual(image['data'], '')
         with open(self.testfile, 'rb') as f:
             data = f.read()
         image.configure(data=data)
-        self.assertEqual(image['data'], data)
+        self.assertEqual(image['data'], data if self.wantobjects
+                                        else data.decode('latin1'))
         self.assertEqual(image.width(), 16)
         self.assertEqual(image.height(), 16)
 
