У меня довольно давно лежали две книги от одного автора Merlin Blencowe. Первую, "Designing Tube Preamps for Guitar and Bass", отсканил очень давно, её можно скачать с
рутрекера или с
яндекс.диска. Правда, это старое издание - у меня лежит и новое, исправленное и доработанное, как-нибудь отсканирую и его.
А сейчас отсканил вторую книгу:
Пока ещё не обрабатывал, всё хочется стряхнуть пыль со своего ScanCombine, написать сколько-нибудь паршивенькую альфу и обработать уже в ней.
Сырые сканы можно скачать
отсюда. Осторожно, 2,3 Гб.
Кстати, отсканировал я её уже в своей программе с романтическим названием TestTwain, она же ScanCombine::BatchScan, вот подумываю о названии CaesarScan, поскольку она одна из немногих (если не единственная), кто умеет сканировать страницу и в это время в фоновых потоках сохранять предыдущие страницы в PNG с максимально возможной степенью сжатия, без потерь.
Тоже год с ней вожусь с попеременным успехом, надеюсь к новому году допилить до хорошей, годной версии, которой не стыдно будет здесь поделиться.
В общем-то, она и сейчас работает недурственно:
- вместо Native image transfer, который самый простой (возвращает тупо hBitmap, а дальше делай с ним что хошь), у меня теперь используется Memory image transfer - там всё "по-взрослому" - тебе дают буфер за буфером "сырую картинку". Польза в том, что когда я сканировал в Grayscale, почему-то этот hBitmap всё равно получался RGB, поэтому он отжирал в 3 раза больше памяти, а для эффективного сжатия в PNG все равно приходилось его переконвертировать в градации серого. Теперь же что задали в настройках - то и придёт. Но с этим ещё можно было смириться, ну подумаешь, картинка A3 с разрешением 600 dpi, 7000x10000, 209 МБ в оперативной памяти! Интереснее другое - некоторые сканеры умеют оцифровывать в 16-битные отсчеты, т.е в 48-битный RGB, но поскольку Bitmap такую глубину цвета не поддерживает, то через Native image transfer их передать невозможно. А здесь должно получиться, проверю в выходные. PNG такую глубину цвета тоже поддерживает.
- приятная мелочь - вот сканировал ты первый раз, получились файлы scan0000.png, scan0001.png, ... scan0050.png. При этом несколько продублировались - скажем первый раз корешок "съелся", поэтому ту же страницу отсканировал ещё разок. Позже стал просматривать и лишнее удалил, получились "прорехи" в нумерации. Все программы, которые я знаю, при последующем сканировании "заделывали" эти прорехи, что приводило к страшной путанице - это заставляло меня выбирать "префиксы" scan0 при первом сканировании, scan1 при втором и т.д.
Моя программа прорехи не заполняет - находит максимальный индекс и начинает с него.
- вторая приятная мелочь - кнопка "вставить пустую странцу". Мне нравится полностью сохранять структуру книги, чтобы можно было при желании эту книгу распечатать и сшить. Поэтому и пустые страницы должны занимать нужные места. С другими программами оказывалось проще тупо запустить сканирование пустой страницы, чем возиться с её "созданием" - программы обработки сканов потом очень волнуются, если не увидят страницу с нужными dpi и размерами, так что пока в редакторе задашь все параметры, пока сохранишь под нужным именем - времени пройдёт больше, чем отсканить! А у меня жмёшь Ctrl+N - и сразу же вставляется новая страница того же размера, что предыдущая, с тем же разрешением, что предыдущая, халява сэр.
- "полный фарш" с потоками - организовал наконец-то Threadpool с числом потоков, равным числу ядер процессора, и очередь на сохранение. Отсканированная страница поступает в очередь, и её забирает освободившийся поток. Если очередь всё растёт и растёт, появится диалог - не желаете ли снизить настройки сжатия, чтобы оно работало побыстрее? Правда, на черно-белых страничках A5 всё это великолепие испытать не удалось, даже при наиболее укуренных настройках сжатия (пробует 4 стратегии Zlib, 9-й, самый медленный уровень компрессии, все фильтры-предикторы) достаточно одного ядра из 4 в моём стареньком хиленьком Quad Core Q8200, чтобы сохранить страницу, пока сканируется следующая. Но если оно будет A3, да ещё в цвете - пригодится!
Ну и в строке состояния показано, на каком этапе каждый из потоков и сколько изображений ожидает в очереди. Правда, в момент сканирования GUI замораживается - это уже особенность интерфейса TWAIN, который блокирует обработку событий. По идее, это можно было бы тоже исправить, но уже не фоновыми потоками, а фоновыми процессами, но не очень хочется лезть в эти дебри. И вообще тут мнение появилось, что TWAIN устарел, нужно WIA осваивать!
- качественное окно просмотра - пока следующая страница сканируется, можно предыдущую хорошенько изучить - всё видно и муар (Aliasing) отсутствует, который бывает, когда ради ускорения отрисовки делают масштабирование "ближайшим соседом". Меня муар пугал всегда, я думал, что там действительно как-то неудачно сенсоры сканера с типографскими точками поладили, так что всё в ряби.
А самый большой недостаток, из-за которого я не спешу эту замечательную программу выкладывать - на моём A3 сканере Mustek после сканирования каждой страницы слетают настройки области сканирования, т.е, либо будь добр сканируй всё стекло, либо КАЖДЫЙ РАЗ вызывай диалог настроек сканера и выбирай заново! Это не моя вина - к сожалению, к сканерам традиционно прилагается ужасающий софт, с этим Mustek'ом я ещё на этапе установки драйверов промучался.
Но выход я вижу только один - вообще отказаться от "родных" настроек сканирования и сделать свои собственные, предельно минималистичные. Туда зачем-то пихают что ни попадя - яркость и контрастность, коррекцию наклона, гамму, гистограммы, причём всё это очевидно пост-обработка, но "вслепую"! У Plustek OpticBook окошко настроек тоже весёлое - там в окошке выбора разрешения все надписи сдвинуты на 1, т.е если выберешь 300 - это будет 150, выберешь 600 - будет 300, а выберешь Custom - будет 600.
Надеюсь, что выкрою немножко времени и успею сделать "бету" до нового года. А если кому-то прямо сейчас нужно что-то большое отсканить - пишите в личку - пришлю что есть...