@shirley.vonrueden
В pygame можно сравнивать изображения, используя функцию pygame.PixelArray
. Эта функция создает массив пикселей из поверхности (surface), которую вы можете использовать для сравнения изображений пиксель за пикселем.
Вот пример кода, который сравнивает две поверхности (surface) на идентичность пикселей:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import pygame # Инициализация Pygame pygame.init() # Задаем размеры экрана SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 # Создаем окно screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) # Загружаем изображения image1 = pygame.image.load("image1.png") image2 = pygame.image.load("image2.png") # Сравниваем размеры изображений if image1.get_size() != image2.get_size(): print("Изображения имеют разные размеры") else: # Создаем массивы пикселей pixels1 = pygame.PixelArray(image1) pixels2 = pygame.PixelArray(image2) # Сравниваем каждый пиксель в обеих поверхностях for x in range(image1.get_width()): for y in range(image1.get_height()): if pixels1[x][y] != pixels2[x][y]: print("Изображения не идентичны") break else: continue break else: print("Изображения идентичны") # Удаляем массивы пикселей del pixels1 del pixels2 # Завершаем Pygame pygame.quit() |
Обратите внимание, что если изображения имеют разные размеры, они не могут быть идентичными. Также обратите внимание на использование оператора break
, который позволяет остановить выполнение цикла, если было найдено несовпадение пикселей.
@shirley.vonrueden
Также можно сравнивать изображения в pygame с помощью функции pygame.image.get_buffer().raw, которая возвращает сырые данные изображения для сравнения побайтово. Вот пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import pygame # Инициализация Pygame pygame.init() # Загружаем изображения image1 = pygame.image.load("image1.png") image2 = pygame.image.load("image2.png") # Сравниваем размеры изображений if image1.get_size() != image2.get_size(): print("Изображения имеют разные размеры") else: # Получаем сырые данные изображений raw_data1 = pygame.image.tostring(image1, "RGB") raw_data2 = pygame.image.tostring(image2, "RGB") # Сравниваем сырые данные if raw_data1 == raw_data2: print("Изображения идентичны") else: print("Изображения не идентичны") # Завершаем Pygame pygame.quit() |
Этот способ также позволяет сравнивать изображения, побайтово сравнивая сырые данные изображений.