Сопоставьте изображение и получите цвет пикселя

У меня есть 2 изображения одинакового размера и одинакового изображения формы. На первом изображении (которое я показываю на экране) форма монохромная, на втором изображении форма отображается другим цветом.

Когда я перемещаю мышь на изображении, я хочу показать другой текст на основе цвета, отображаемого на втором (скрытом) изображении.

Я не хочу отображать квадратную область, но неправильные области, это моя проблема.

Например, когда курсор мыши находится на голове (правое изображение), я получаю красный цвет на левом изображении (кэшированном, но не визуализируемом) и добавляю определенный текст.

Пример изображения

Как я могу загрузить второе изображение и получить цвет пикселя? Gosu не позволяет получить информацию об изображении (только ширину и высоту).

Любые идеи?


person Nifriz    schedule 23.07.2019    source источник
comment
Подойдет любая привязка ruby ​​к imagemagick.   -  person Aleksei Matiushkin    schedule 23.07.2019
comment
@AlekseiMatiushkin, это идеально. Благодарю вас!   -  person Nifriz    schedule 23.07.2019
comment
у вас есть пример кода вашей реализации, который вы можете опубликовать? Этот вопрос может быть более полезным с ответом, а не только с комментарием со ссылкой на библиотеку.   -  person lacostenycoder    schedule 23.07.2019


Ответы (1)


В конце концов я выбираю этот GEM chunky_png, потому что он не зависит от других драгоценных камней или библиотек и идеально подходит для моих нужд:

@map_image = ChunkyPNG::Image.from_file('map_shape.png')                  

# Test pixel color
if @map_image[mouse_x - @main_image_x, mouse_y - @main_image_y] == ChunkyPNG::Color.rgb(255, 0,0)
 # Do something
end
person Nifriz    schedule 24.07.2019