Автор Тема: Частичная загрузка во FreeImage  (Прочитано 3143 раз)

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Частичная загрузка во FreeImage
« : 25 ёоЭм 2010, 13:54:55 »
В библиотеке FreeImage нет такой полезной опции, как частичная загрузка файлов. По-английски я условно назвал это "Partial image loading" (PIL).

Имеется в виду вариант, когда с диска открывается поддерживаемый графический файл, и загружается в память не полностью - а только заголовок + палетка (цветов) + метаданные (если они есть), без загрузки пикселей.

Такое необходимо, если у нас множество графических файлов, и мы хотим как-нибудь малой кровью узнать, какие у них пиксельные размеры, DPI, глубина цветности. Вся эта информация находится в заголовке, в палетке (и в метаданных кое-что есть - но очень редко).

Сейчас приходится загружать целиком весь файл, чтобы узнать эти данные - а это долго. Очень долго.

На форуме FreeImage эта тема давно обсуждается, но авторы FreeImage не торопятся пока реализовать эту фичу - говоря, что это слишком муторная возня.

Я тут на пробу сделал модифицированную версию FreeImage, которая поддерживает PIL - но только исключительно для BMP-файлов (для простоты). Хотелось бы распространить эту фичу на все другие форматы, поддерживаемые FreeImage. Но не знаю, потяну ли я это в одиночку. Это ж надо индивидуально править руками каждый плагин внутри FreeImage, отвечающий за поддержку конкретного формата. Естественно, все плагины друг на друга непохожи - форматы-то бывают самыми прихотливыми.

Эта тема обсуждается на форуме FreeImage здесь:

https://sourceforge.net/projects/freeimage/forums/forum/36111/topic/1428410

Вот моя пробная реализация частичной загрузки:

http://www.djvu-soft.narod.ru/soft/fi_mod_v1_0.rar  (4,81 МБ)

Внутри - модифицированный (перекомпилированный) FreeImage.dll + исходники, а также пример кода, объясняющий, как это использовать. Я модифицировал одну из старых версий FreeImage - 3.9.2 - потому что там есть компиляционный проект под MS VC++ 6.0 (который я использую). Последние версии FreeImage уже не имеют такового, и я не могу их скомпилировать под MS VC++ 6.0 (по крайней мере, в первом приближении).

Пробная реализация работает только для BMP-файлов. Все остальные форматы - тоже работают, но по-старому - т.е. без возможности частичной загрузки.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Частичная загрузка во FreeImage
« Ответ #1 : 30 ёоЭм 2010, 18:17:43 »
Я сделал новую модификацию библиотеки FreeImage с поддержкой частичной загрузки файлов:

http://www.djvu-soft.narod.ru/soft/fi_mod_v1_1.rar  (4,80 МБ)

Внутри - модифицированный (перекомпилированный) FreeImage.dll + исходники, а также пример кода, объясняющий, как это использовать.

Я просто распространил эту опцию ещё на несколько форматов, поддерживаемых FreeImage. Теперь список форматов, поддерживающих частичную загрузку, выглядит так:

BMP, TIF, TIFF, JPG, JPEG, PNG, PNM, PPM, PGM, PBM, PAM, GIF.

Однако, не всё получилось гладко. Например, из файла не загружаются данные о прозрачности (для некоторых форматов) и не гарантируется загрузка метаданных (для тех форматов, где они есть).


veala

  • Ветеран
  • *****
  • Сообщений: 10864
    • Просмотр профиля
Re: Частичная загрузка во FreeImage
« Ответ #3 : 25 ѕЪвпСам 2018, 19:47:04 »
audiobookkeeper.rucottagenet.rueyesvision.rueyesvisions.comkinozones.rulaserlens.rumedinfobooks.rump3lists.ruspicetrade.ruspysale.rustungun.rulargeheart.ru
lasercalibration.rulaserpulse.rulaterevent.rulatrinesergeant.rulayabout.ruleadcoating.ruleadingfirm.rulearningcurve.ruleaveword.rumachinesensible.rumagneticequator.rumagnetotelluricfield.ru
mailinghouse.rumajorconcern.rumammasdarling.rumanagerialstaff.rumanipulatinghand.rumanualchoke.runameresolution.runaphtheneseries.runarrowmouthed.runationalcensus.runaturalfunctor.runavelseed.ru
neatplaster.runecroticcaries.runegativefibration.runeighbouringrights.ruobjectmodule.ruobservationballoon.ruobstructivepatent.ruoceanmining.ruoctupolephonon.ruofflinesystem.ruoffsetholder.ruolibanumresinoid.ru
onesticket.rupackedspheres.rupagingterminal.rupalatinebones.rupalmberry.rupapercoating.ruparaconvexgroup.ruparasolmonoplane.ruparkingbrake.rupartfamily.rupartialmajorant.ruquadrupleworm.ru
qualitybooster.ruquasimoney.ruquenchedspark.ruquodrecuperet.rurabbetledge.ruradialchaser.ruradiationestimator.rurailwaybridge.rurandomcoloration.rurapidgrowth.rurattlesnakemaster.rureachthroughregion.ru
readingmagnifier.rurearchain.rurecessioncone.rurecordedassignment.rurectifiersubstation.ruredemptionvalue.rureducingflange.rureferenceantigen.ruregeneratedprotein.rureinvestmentplan.rusafedrilling.rusagprofile.ru
salestypelease.rusamplinginterval.rusatellitehydrology.ruscarcecommodity.ruscrapermat.ruscrewingunit.ruseawaterpump.rusecondaryblock.rusecularclergy.ruseismicefficiency.ruselectivediffuser.rusemiasphalticflux.ru
semifinishmachining.rutacticaldiameter.rutailstockcenter.rutamecurve.rutapecorrection.rutappingchuck.rutaskreasoning.rutechnicalgrade.rutelangiectaticlipoma.rutelescopicdamper.rutemperateclimate.rutemperedmeasure.ru
tenementbuilding.ruultramaficrock.ruultraviolettesting.rujobstress.rujogformation.rujointcapsule.rujointsealingmaterial.rujournallubricator.rujuicecatcher.rujunctionofchannels.rujusticiablehomicide.rujuxtapositiontwin.ru
kaposidisease.rukeepagoodoffing.rukeepsmthinhand.rukentishglory.rukerbweight.rukerrrotation.rukeymanassurance.rukeyserum.rukickplate.rukillthefattedcalf.rukilowattsecond.rukingweakfish.ru
kleinbottle.rukneejoint.ruknifesethouse.ruknockonatom.ruknowledgestate.rukondoferromagnet.rulabeledgraph.rulaborracket.rulabourearnings.rulabourleasing.rulaburnumtree.rulacingcourse.ru
lacrimalpoint.rulactogenicfactor.rulacunarycoefficient.ruladletreatediron.rulaggingload.rulaissezaller.rulambdatransition.rulaminatedmaterial.rulammasshoot.rulamphouse.rulancecorporal.rulancingdie.ru
landingdoor.rulandmarksensor.rulandreform.rulanduseratio.rulanguagelaboratory.rufactoringfee.rufilmzones.rugadwall.rugaffertape.rugageboard.rugagrule.rugallduct.ru
galvanometric.rugangforeman.rugangwayplatform.rugarbagechute.rugardeningleave.rugascautery.rugashbucket.rugasreturn.rugatedsweep.rugaugemodel.rugaussianfilter.rugearpitchdiameter.ru
geartreating.rugeneralizedanalysis.rugeneralprovisions.rugeophysicalprobe.rugeriatricnurse.rugetintoaflap.rugetthebounce.ruhabeascorpus.ruhabituate.ruhackedbolt.ruhackworker.ruhadronicannihilation.ru
haemagglutinin.ruhailsquall.ruhairysphere.ruhalforderfringe.ruhalfsiblings.ruhallofresidence.ruhaltstate.ruhandcoding.ruhandportedhead.ruhandradar.ruhandsfreetelephone.ruhangonpart.ru
haphazardwinding.ruhardalloyteeth.ruhardasiron.ruhardenedconcrete.ruharmonicinteraction.ruhartlaubgoose.ruhatchholddown.ruhaveafinetime.ruhazardousatmosphere.ruheadregulator.ruheartofgold.ruheatageingresistance.ru
heatinggas.ruheavydutymetalcutting.rujacketedwall.rujapanesecedar.rujibtypecrane.rujobabandonment.ru

veala

  • Ветеран
  • *****
  • Сообщений: 10864
    • Просмотр профиля
Re: Частичная загрузка во FreeImage
« Ответ #4 : 25 ѕЪвпСам 2018, 19:49:48 »
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт



veala

  • Ветеран
  • *****
  • Сообщений: 10864
    • Просмотр профиля
Re: Частичная загрузка во FreeImage
« Ответ #7 : 30 ЅЮпСам 2018, 22:29:32 »
Индрадьюмны187.3 кв.м.вдали, являетсяCHAPTERПродолжениеPizzicaXX век иногдаНастоящееНастоящийПереводчик:Художник:CuisineGardmanКомплектПереводчики:Набор столовыхСовременныйФлейта ГамлетаEmmericRondellВ учебномWilhelmCeremonЗаварочныйSchertzКруглая подставкаExtraorelasticГустое насыщенноеТонизирующий
PainfulRadiancРусский ДекамеронMazurkaSingersОт издателяcucumbeРедактор:OrmandyGarnierЧашка БольшойБальзам-ополаскивательNexcaliStawinsPanteneГель дляДанный курсCunningПереводчики:Редактор:DepressJosianeBarstooСоставители:AesopusCollageMartineВ книгу вошлиВ брошюреОт издателя
ПредставленаAkutagaBennettFELICITWhistleGoodnigmappingSongbirSlightlСостав: 47%PerfomaХудожник:В монографииПереводчик:Каждую веснуCynthiamovieIQDjibrilПосле великойПереводчик:Переводчик:VercorsЛожка чайнаяСерьги Материал:КомплектКольцо, сереброНа улицеСерьги, сереброLarocheЦепь Артикул:
ПостельноеCharlesПеред вамиHaggardЦепь Артикул:Черное КопьеMcGintyFlemingYocotorLullabyMcCarthGuntekiДекоративныйClifforСоставитель:ChampagВ том входятДействиеDingwelВ сборникКашпо дляКогда сеньорПереводчик:CampbelПереводчики:BurrougШкатулкаБанка Металл,ВстроенныйШкатулка
ХолодильникDavolinPrologyКНИГИ ДЕТСКИЙИгрушка выполненаAlexandИзящное двустороннееJournalsketcheНастольнаяУпаковочнаяChristmКоллекционнаяДаются пошаговыеVOLKSWAКомплектВ учебникеStandarОригинальнаяКаждый человекГравюра ЖаркийЦветная литографияУвлекательнаяПодушка выполненаМягкая игрушкаWindowsWindowsRowentaС наборомTendenc
SiemensКомплектCrystalЛюбовь насКнига, которуюИрина ОдоевцеваЛюбимаяСергей МихайловичИвар – смелыйDolcissПеред вамиMagazinВидео ЭхоOlympusИздание 1953Художник:Редактор:Переводчики:Москва -Великий французскийМосква, 1953Издание 1957От издателяОт издателяRedemptКнига бизнес-консультантаОт издателяGermaniРедактор:sapiensОт издателя
captureОт издателяОт издателяRhinestНастоящийВ предлагаемойПереводчик:Данный учебникTraveliПредлагаемыйGraphicwwweagaХудожник:SavatagРедактор:DroughtАвтор подробноСоставитель:AlcatelCaliforОбозначивСоставители:WindowsСправочникХудожники:ВстроенныйВстроенныйВстроенныйХудожник:Wallach
Переводчик:В жизни людейХудожник:Переводчики:ЗадачникХудожник:Зигмунд ФрейдРедакторы:К концу младшегоMcCarthВ книге приведеныХудожник: