#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. Последнее-это последнее показанное изображение, которое является принятым изображением.