Какую программу gem или внешнюю программу я должен использовать с Ruby и Linux, чтобы помочь выбрать образ?

#ruby #linux #imagemagick #rmagick #feh

Вопрос:

Мой скрипт Ruby выбирает случайное изображение из каталога фотографий, затем показывает выбранное изображение мне, просто вызвав средство просмотра изображений «feh». В настоящее время я не могу перейти к следующей фотографии, если это необходимо: так как фотография должна несколько соответствовать музыке, которая была выбрана сценарием ранее также случайным образом и открыта в медиаплеере. Какой драгоценный камень или даже внешнюю программу я могу использовать для этой цели, которая, если ее вызвать, позволяет перейти к следующему случайному изображению и ждать, пока я нажму Y или ESC, чтобы принять, или N для следующего случайного изображения.

Комментарии:

1. Мне жаль, но ваш вопрос мне непонятен. Зачем вам нужен драгоценный камень, чтобы выбрать следующее случайное изображение из папки?

2. Каким-то образом основной скрипт Ruby должен быть проинформирован о том, что данное изображение, которое показано на экране, было мной принято.

3. Вы могли бы попробовать ImageMagick.

Ответ №1:

Хитрое решение, которое я нашел с помощью feh:

 ret=%x{feh -z --info "echo '%F' 1>amp;2" /path/to/images/* 2>amp;1}
last_image=ret.split("n").last
puts "chosen image: " last_image
 

Пояснение: -z рандомизирует список файлов, —информация принимает командную строку, возвращаемое значение которой отображается на изображении в виде информации, например, данные exif, размер и т. Д. В настоящее время это простая команда echo, повторяющая фактический путь к файлу, но перенаправляющая свои выходные данные в stderr из stdout. Таким образом, информация не отображается на текущем изображении, а просто выводится на STDERR. В конце командной строки feh его stderr перенаправляется в stdout, поэтому команда Ruby %x собирает напечатанные строки. После выхода из feh переменная «ret» содержит все напечатанные строки, которые были повторены крючком —info. Последнее-это последнее показанное изображение, которое является принятым изображением.