Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

minidjvu? #4

Open
zvezdochiot opened this issue Jan 19, 2023 · 18 comments
Open

minidjvu? #4

zvezdochiot opened this issue Jan 19, 2023 · 18 comments

Comments

@zvezdochiot
Copy link
Contributor

zvezdochiot commented Jan 19, 2023

Hi @plzombie .

❓ А твоя прога могёт сначала "наплодить" PBM и чанки BG/FG, пройтись по PBM minidjvu или minidjvu-mod, разложить полученную многостраничную BW DjVu-шку на составляющие с помощью djvmcvt -i, встроить с помощью djvumake чанки BG/FG и слепить обратно DjVu-шку с помощью djvmcvt -b?

@plzombie
Copy link
Owner

Привет. Нет. А в чём смысл использовать minidjvu? Если в minidjvu есть какие-то фичи, которых не хватает в djvulibre, то может логично бэкпортировать их обратно в djvulibre? Или тогда может лучше смотреть в сторону патча к minidjvu, чтобы он при перекодировании сохранял цветные чанки?

@zvezdochiot
Copy link
Contributor Author

zvezdochiot commented Jan 19, 2023

@plzombie say:

А в чём смысл использовать minidjvu?

Словари (dict), minidjvu изначально задумывался как многостраничный и именно для этого. Но! Он работает только с JB2 + dict.

@plzombie say:

чтобы он при перекодировании сохранял цветные чанки?

Ответил выше. Only JB2.

@plzombie say:

логично бэкпортировать их обратно в djvulibre?

Отвратительнейшая библиотека с точки зрения разработки. Нефига в неё ничего бэкпортировать. Наоборот! Надо бэкпортировать из неё. И желательно на Си.

PS: Подробности "процесса" смотри в https://github.com/ImageProcessing-ElectronicPublications/imthreshold/tree/master/bash/djvu/MFB-make : djvu-pnm-tdjvul-minidjvu.sh.

PS2: А по поводу бэкпортирования: jb2unify так и не был включён в состав djvulibre. Ты о нём наверное даже не слышал. Жаль только словарь делает на все страницы, а не на n-ное количество, как minidjvu.

PS3: Кстати, ты не мог бы попробовать собрать mfbdjvu под винду. Потому как мой mingw тупо саму djvulibre собрать не могёт. Никакую версию.

@plzombie
Copy link
Owner

PS3: Кстати, ты не мог бы попробовать собрать mfbdjvu под винду. Потому как мой mingw тупо саму djvulibre собрать не могёт. Никакую версию.

Посмотрю

@zvezdochiot
Copy link
Contributor Author

@plzombie say:

Посмотрю

Только попробуй собрать сначала djvulibre (submodule). Ежели не слинкуется, то дохлый номер пробовать собрать mfbdjvu.

@plzombie
Copy link
Owner

Там через Visual Studio собирается под винду. Я могу файлы проекта сделать. Если хочешь руками через makefile собрать, то там следующие библиотеки:
libdjvulibre.dll:
Файлы:
"......\libdjvu\Arrays.cpp" />
"......\libdjvu\atomic.cpp"
"......\libdjvu\BSByteStream.cpp"
"......\libdjvu\BSEncodeByteStream.cpp"
"......\libdjvu\ByteStream.cpp"
"......\libdjvu\DataPool.cpp"
"......\libdjvu\ddjvuapi.cpp"
"......\libdjvu\debug.cpp"
"......\libdjvu\DjVmDir.cpp"
"......\libdjvu\DjVmDir0.cpp"
"......\libdjvu\DjVmDoc.cpp"
"......\libdjvu\DjVmNav.cpp"
"......\libdjvu\DjVuAnno.cpp"
"......\libdjvu\DjVuDocEditor.cpp"
"......\libdjvu\DjVuDocument.cpp"
"......\libdjvu\DjVuDumpHelper.cpp"
"......\libdjvu\DjVuErrorList.cpp"
"......\libdjvu\DjVuFile.cpp"
"......\libdjvu\DjVuFileCache.cpp"
"......\libdjvu\DjVuGlobal.cpp"
"......\libdjvu\DjVuGlobalMemory.cpp"
"......\libdjvu\DjVuImage.cpp"
"......\libdjvu\DjVuInfo.cpp"
"......\libdjvu\DjVuMessage.cpp"
"......\libdjvu\DjVuMessageLite.cpp"
"......\libdjvu\DjVuNavDir.cpp"
"......\libdjvu\DjVuPalette.cpp"
"......\libdjvu\DjVuPort.cpp"
"......\libdjvu\DjVuText.cpp"
"......\libdjvu\DjVuToPS.cpp"
"......\libdjvu\GBitmap.cpp"
"......\libdjvu\GContainer.cpp"
"......\libdjvu\GException.cpp"
"......\libdjvu\GIFFManager.cpp"
"......\libdjvu\GMapAreas.cpp"
"......\libdjvu\GOS.cpp"
"......\libdjvu\GPixmap.cpp"
"......\libdjvu\GRect.cpp"
"......\libdjvu\GScaler.cpp"
"......\libdjvu\GSmartPointer.cpp"
"......\libdjvu\GString.cpp"
"......\libdjvu\GThreads.cpp"
"......\libdjvu\GUnicode.cpp"
"......\libdjvu\GURL.cpp"
"......\libdjvu\IFFByteStream.cpp"
"......\libdjvu\IW44EncodeCodec.cpp"
"......\libdjvu\IW44Image.cpp"
"......\libdjvu\JB2EncodeCodec.cpp"
"......\libdjvu\JB2Image.cpp"
"......\libdjvu\JPEGDecoder.cpp"
"......\libdjvu\miniexp.cpp"
"......\libdjvu\MMRDecoder.cpp"
"......\libdjvu\MMX.cpp"
"......\libdjvu\UnicodeByteStream.cpp"
"......\libdjvu\XMLParser.cpp"
"......\libdjvu\XMLTags.cpp"
"......\libdjvu\ZPCodec.cpp"
Дефайны: DJVUAPI_EXPORT;DDJVUAPI_EXPORT;MINILISPAPI_EXPORT;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBDJVULIBRE_EXPORTS;
Плюс libjpeg.dll
Файлы:
"....\jpeg\jpeg-6b\jcapimin.c"
"....\jpeg\jpeg-6b\jcapistd.c"
"....\jpeg\jpeg-6b\jccoefct.c"
"....\jpeg\jpeg-6b\jccolor.c"
"....\jpeg\jpeg-6b\jcdctmgr.c"
"....\jpeg\jpeg-6b\jchuff.c"
"....\jpeg\jpeg-6b\jcinit.c"
"....\jpeg\jpeg-6b\jcmainct.c"
"....\jpeg\jpeg-6b\jcmarker.c"
"....\jpeg\jpeg-6b\jcmaster.c"
"....\jpeg\jpeg-6b\jcomapi.c"
"....\jpeg\jpeg-6b\jcparam.c"
"....\jpeg\jpeg-6b\jcphuff.c"
"....\jpeg\jpeg-6b\jcprepct.c"
"....\jpeg\jpeg-6b\jcsample.c"
"....\jpeg\jpeg-6b\jctrans.c"
"....\jpeg\jpeg-6b\jdapimin.c"
"....\jpeg\jpeg-6b\jdapistd.c"
"....\jpeg\jpeg-6b\jdatadst.c"
"....\jpeg\jpeg-6b\jdatasrc.c"
"....\jpeg\jpeg-6b\jdcoefct.c"
"....\jpeg\jpeg-6b\jdcolor.c"
"....\jpeg\jpeg-6b\jddctmgr.c"
"....\jpeg\jpeg-6b\jdhuff.c"
"....\jpeg\jpeg-6b\jdinput.c"
"....\jpeg\jpeg-6b\jdmainct.c"
"....\jpeg\jpeg-6b\jdmarker.c"
"....\jpeg\jpeg-6b\jdmaster.c"
"....\jpeg\jpeg-6b\jdmerge.c"
"....\jpeg\jpeg-6b\jdphuff.c"
"....\jpeg\jpeg-6b\jdpostct.c"
"....\jpeg\jpeg-6b\jdsample.c"
"....\jpeg\jpeg-6b\jdtrans.c"
"....\jpeg\jpeg-6b\jerror.c"
"....\jpeg\jpeg-6b\jfdctflt.c"
"....\jpeg\jpeg-6b\jfdctfst.c"
"....\jpeg\jpeg-6b\jfdctint.c"
"....\jpeg\jpeg-6b\jidctflt.c"
"....\jpeg\jpeg-6b\jidctfst.c"
"....\jpeg\jpeg-6b\jidctint.c"
"....\jpeg\jpeg-6b\jidctred.c"
"....\jpeg\jpeg-6b\jmemmgr.c"
"....\jpeg\jpeg-6b\jmemnobs.c"
"....\jpeg\jpeg-6b\jquant1.c"
"....\jpeg\jpeg-6b\jquant2.c"
"....\jpeg\jpeg-6b\jutils.c"
Дефайны: WIN32;NDEBUG;_LIB;_WINDOWS;

@plzombie
Copy link
Owner

Могу создать проект для VisualStudio конкретно под это, потом попробовать мэйкфайл для mingw сделать. Хотя с mingw я не работал, придётся разбираться

@zvezdochiot
Copy link
Contributor Author

zvezdochiot commented Jan 20, 2023

@plzombie say:

Могу создать проект

Звучит неплохо. Но для начала хотелось бы просто сборку под винду. Ежели сделаешь, то добавь в mfbdjvu: 1.1 в виде ZIP-архива. Только проверь objdump -p-ом, чтобы все dll-ки окромя KERNEL32.dll и msvcrt.dll в сборку попали. Да и вообще старайся напирать на -static.

PS: Моя прога окромя PNM ничего не кушает. Никак без libtiff и libjpeg не обойтись?

@plzombie
Copy link
Owner

jb2tune.h отсутствует. Плюс я не совсем понимаю, зачем там jb2cmp

@plzombie
Copy link
Owner

Касательно длл-ок, то вот как выглядит мой проект например
изображение
msvcrt.dll сейчас уже не используется вижуалстудией со времён vs6

@zvezdochiot
Copy link
Contributor Author

zvezdochiot commented Jan 20, 2023

@plzombie say:

jb2tune.h отсутствует.

Как отсутствует? src/djvulibre/tools/jb2tune.h. Он же включён в инклюды. Или ты пытаешься собрать без submodule?

@plzombie say:

msvcrt.dll сейчас уже не используется

Но пользуется mingw и в винде всё равно есть (и в wine). А вот VCRUNTIME140.dll под wine точно нет.

@plzombie say:

я не совсем понимаю, зачем там jb2cmp

Да я понятия не имею, как там JB2 колдуется. Я позаимствовал это в simpledjvu. А у него написано, что позаимствовал в minidjvu. Чему верить не знаю. Смогёшь сделать JB2-колдунство проще - твоя правда. А у меня вариантов то особо нету.

PS: Чисто из любопытства, поменял src/jb2tune.o на src/djvulibre/tools/jb2tune.o в Makefile. Никаких проблем. Полёт нормальный. В следующем выпуске искореню src/jb2tune.cpp 👍 .

@plzombie
Copy link
Owner

Ок, я каким-то чудом собрал. Статической библиотеки сейчас уже нет, так что без вариантов, или попробовать мэйкфайлы для mingw сделать. А под вайн vcredist разве не устанавливается? https://learn.microsoft.com/ru-ru/cpp/windows/latest-supported-vc-redist?view=msvc-170

@plzombie
Copy link
Owner

изображение
Результат работы

@zvezdochiot
Copy link
Contributor Author

zvezdochiot commented Jan 20, 2023

@plzombie say:

А под вайн vcredist разве не устанавливается?

Устанавливается. Но зачем плодить "чудеса", когда можно вложить в ZIP одну dll-ку?

Последовал твоему своевременному совету и поудалял всю ересь, сделав сборку проще: mfbdjvu: 1.2. У меня полёт нормальный. Но как будет под винду?

@plzombie say:
котики

Это с каким "бешенным" DPI ты сделал такую "великолепную" картинку? На таком надо предварительно с маской помучастся, а лишь потом разделять по готовой маске (-mask mask.pbm).

@plzombie
Copy link
Owner

Стандартными параметрами

@plzombie
Copy link
Owner

Устанавливается. Но зачем плодить "чудеса", когда можно вложить в ZIP одну dll-ку?

Там не одна dll. И у подавляющего большинства пользователей под винду оно уже установлено так или иначе. Сейчас файлы залью с проектом для вижуалстудии

@zvezdochiot
Copy link
Contributor Author

zvezdochiot commented Jan 20, 2023

@plzombie say:

Сейчас файлы залью с проектом для вижуалстудии

Смотри только. Я там конкретно стрипанул. Пути наверняка надо подправить!

@plzombie say:

Стандартными параметрами

Так может их подправить (slice)? Я их скопировал неглядя. А у тебя какие цифири пользуются?

Всё. Увидел:

quality = flags.quality + 30;
if(quality < 30) quality = 30;
if(quality > 130) quality = 130;
swprintf(arg_temp, 80, L"-slice %d,%d,%d", quality-25, quality-15, quality);

Осталось только FG найти. Буду кумекать. :)

@plzombie
Copy link
Owner

Можно и подправить
изображение
Прикрепил бинарники

@zvezdochiot
Copy link
Contributor Author

@plzombie say:

Прикрепил бинарники

В дискусе не отметился. (

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants