Цель ФотоСлайдера Я прочитал несколько фотоблогов, в которых иногда есть «фотопачки/сессии/отчеты».
Плюс мои друзья носят с собой гигабайты своих фотографий.
Как только фотографий становится достаточно много (по 10-20 тысяч каждая), я их просматриваю, оставляя избранные 0,001% из них для своих обоев.
Камеры у всех становятся лучше, фотографии весят всё больше, что не может не сказаться на скорости их загрузки.
Возникла проблема с тем, как эффективно все это очистить.
Практически все фотографии удаляются после однократного просмотра, небольшое количество избранных перемещается в папку обоев.
Сначала я использовал Picasa или FSViewer. Но по какой-то причине оба не были удовлетворительными.
- Picasa не хочет показывать фотографии на весь экран, их нельзя удалить нажатием одной кнопки (запрашивает подтверждение для каждой фотографии), переход к следующей фотографии происходит довольно медленно (если просматривать фотографии ~24 МП на ноутбук, это очень неприятно);
- FSViewer тоже оказался не особо быстрым, с лучшим удалением, но все равно медленным.
Кроме того, он до сих пор не понимает юникод в именах файлов (давно просил разработчиков добавить поддержку).
Как использовать
Установки нет, запускается из консоли.Он понимает только 2 параметра:
- как - запускать на всех мониторах
- --movepath [путь] — куда переместить избранное (по умолчанию создается папка _good).
Если есть возможность вывести на экран несколько фотографий (например, если 2 панорамы поместятся на экране вертикально, не мешая друг другу), то будет показано несколько.
Управление следующее (невозможно настроить за ненадобностью, по крайней мере у меня).
- побег - Выход;
- космос — показать следующую порцию фотографий, ничего не делая с текущими;
- дель - удалить все.
Будьте осторожны, они удаляются без всяких запросов и мимо корзины!
- м — переместить все фотографии «в избранное»;
- стрелки вверх/вниз - «добавить/удалить строку».
Те.
Максимальное вертикальное разрешение фотографии делится на количество строк.
Удобно просматривать пакетно, когда много неинтересных фотографий;
- стрелки влево/вправо - то же самое, только со строками;
- Щелчком мыши можно просмотреть фотографию «на весь экран», если количество строк/столбцов > 0, отдельно от остальных фотографий.
На правой кнопке есть меню, дублирующее кнопки
Как это технически реализовано?
Фотографии загружены в отдельную тему.Чтобы не тратить время на масштабирование при отображении на экране, все фотографии масштабируются (с сохранением пропорций) под разрешение экрана в одной (специальной) теме.
Отдельный поток обрабатывает комбинацию фотографий для следующего экрана.
При поступлении команды с объединенного экрана сначала показываются новые фотографии (чтобы пользователь увидел их с как можно меньшей задержкой) и только потом освобождаются/удаляются/перемещаются старые фотографии.
Чтобы не заполнять всю память, есть ограничение на количество фотографий, висящих в очереди (теперь это абстрактное ограничение: сумма всех фотографий (ширина*высота*4) < 1024 * 1024 * 1024. I want to change everything to a limit depending on the available RAM, but for now there are more interesting things to do).
По ощущениям работает гораздо быстрее, чем другие просмотрщики (для описанных выше целей), но я ожидал получить большую скорость.
Похоже где-то есть узкое место, но я его пока не профилировал из-за отсутствия профайлера.
Среди замеченных, но не уловленных дефектов:
- некоторые фотографии отказываются загружаться, хотя FSViewer открывает их без проблем.
Кажется, проблема где-то внутри функций Windows, которые использует .
NET Framework;
- Иногда невозможно удалить определенные файлы.
Я не мог погуглить, почему их не удаляют;
- иногда вы получаете неправильное масштабирование, если часто играете с изменением количества строк/столбцов;
NET 3.5. Часто писалось по частям и на скорую руку, архитектура приложения очень запутанная.
Надеюсь, что как-нибудь соберусь и приведу код к нормальной читабельности.
Комментариев по большей части нет по той же причине (+ изначально я не планировал развивать дальше «приложения на один-два раза»).
Проверено только под Windows. Я еще ничего не писал под Mono; Не знаю, скомпилируется или нет. Хотя у меня все больше возникает соблазн перейти на Ubuntu, возможно, в будущем я переведу ее в моно.
Исходники размещены на Google-код под лицензией GPL3. Надеюсь, эта утилита будет полезна еще кому-нибудь, кроме меня.
Теги: #просмотр изображений #лайфхак #gpl3 #.
NET #C++ #занимаюсь пиаром
-
Как Мне Надоел Кальмар С Аудиоплеером
19 Oct, 24 -
Следующий Seedcamp Пройдет В Киеве
19 Oct, 24 -
Статьи На Английском Языке.
19 Oct, 24