Momba ny fomba hafahafa hamonjena toerana kapila mafy

Mpampiasa iray hafa te hanoratra angona vaovao amin'ny kapila mafy, saingy tsy manana toerana malalaka hanaovana izany izy. Tsy te-hamafa na inona na inona koa aho, satria "zava-dehibe sy ilaina ny zava-drehetra." Ary inona no tokony hataontsika amin'izany?

Tsy misy manana izany olana izany. Misy fampahalalana terabytes ao amin'ny kapila mafy ataontsika, ary tsy mihena izany vola izany. Fa ny maha-tokana azy? Amin'ny farany, ny rakitra rehetra dia andiana bits amin'ny halavany ary azo inoana fa ny vaovao dia tsy mitovy amin'ilay efa voatahiry.

Mazava fa ny fitadiavana ireo fampahalalana efa voatahiry ao amin'ny kapila mafy dia, raha tsy fahombiazana, dia farafaharatsiny tsy asa mahomby. Amin'ny lafiny iray, raha kely ny fahasamihafana dia azonao atao ny manitsy azy kely ...

Momba ny fomba hafahafa hamonjena toerana kapila mafy

TL;DR - ny fanandramana faharoa miresaka momba ny fomba hafahafa amin'ny fanatsarana ny angon-drakitra amin'ny fampiasana rakitra JPEG, amin'izao fotoana izao amin'ny endrika azo takarina kokoa.

Momba ny bits sy ny fahasamihafana

Raha maka angon-drakitra roa kisendrasendra tanteraka ianao, dia mifanandrify amin'ny antsasaky ny bits misy azy ireo. Eny tokoa, amin'ireo lamina mety ho an'ny mpivady tsirairay ('00, 01, 10, 11β€²), ny antsasany dia mitovy ny sandany, tsotra ny zava-drehetra eto.

Saingy mazava ho azy fa raha maka rakitra roa fotsiny isika ary mifanaraka amin'ny iray amin'ny faharoa, dia ho very ny iray amin'izy ireo. Raha mitahiry ireo fanovana isika, dia hanamboatra indray delta encoding, izay misy tsara tsy misy antsika, na dia tsy ampiasaina amin'ny tanjona mitovy aza izy io. Azontsika atao ny manandrana mampiditra filaharana kely kokoa ho lehibe kokoa, saingy na dia izany aza dia mety ho very ampahany manan-danja amin'ny angona isika raha mampiasa azy io amin'ny zava-drehetra.

Eo anelanelan'ny inona sy ny inona no azo esorina ny fahasamihafana? Eny, izany hoe, rakitra vaovao nosoratan'ny mpampiasa dia andiana bits fotsiny, izay tsy ahafahantsika manao na inona na inona irery. Avy eo dia mila mitady bitika toy izany amin'ny kapila mafy ianao fa azo ovaina tsy mila mitahiry ny fahasamihafana, mba hahafahanao mivelona amin'ny fahaverezany tsy misy vokany lehibe. Ary misy dikany ny manova tsy ny rakitra ao amin'ny FS ihany, fa ny fampahalalana tsy dia saro-pady ao anatiny. Fa iza ary ahoana?

Fomba fanamboarana

Ny rakitra voatsindry very dia tonga hamonjy. Ireo jpeg, mp3 sy ny hafa rehetra ireo, na dia misy famatrarana very aza, dia misy andiana bit izay azo ovaina soa aman-tsara. Azo atao ny mampiasa teknika avo lenta izay manova tsy hita maso ny singany amin'ny dingana isan-karazany amin'ny fanodinana. Andraso. Teknika avo lenta ... fanovana tsy hita maso ... ny iray ho amin'ny iray hafa ... saika mitovy steganography!

Eny tokoa, ny fampidirana vaovao iray amin'ny iray hafa dia mampahatsiahy ny fomba fanaony tsy misy hafa. Mahavariana ahy koa ny tsy fahatakarana ny fiovan'ny sain'olombelona. Ny toerana misy ny tsy fitovizan'ny lalana dia ao anaty tsiambaratelo: ny asanay dia tonga amin'ny mpampiasa mampiditra fampahalalana fanampiny ao amin'ny kapila mafy ananany; hanimba azy fotsiny izany. Hanadino indray izy.

Noho izany, na dia afaka mampiasa azy ireo aza isika, dia mila manao fanovana sasany. Ary avy eo aho dia hilaza sy hampiseho azy ireo amin'ny fampiasana ny ohatry ny iray amin'ireo fomba efa misy sy ny format rakitra mahazatra.

Momba ny amboadia

Raha tena manindry azy ianao dia io no zavatra azo fehezina indrindra eto an-tany. Mazava ho azy fa miresaka momba ny rakitra JPEG izahay. Tsy vitan'ny hoe fitaovana an-taoniny sy fomba efa misy amin'ny fampidirana angon-drakitra ao anatiny, fa io no endrika sary malaza indrindra eto amin'ity planeta ity.

Momba ny fomba hafahafa hamonjena toerana kapila mafy

Na izany aza, mba tsy hiditra amin'ny fiompiana alika dia mila mametra ny sehatry ny asanao amin'ny rakitra amin'ity endrika ity ianao. Tsy misy olona tia efamira monochrome izay miseho noho ny fanerena tafahoatra, noho izany dia mila mametra ny tenanao amin'ny fiasana amin'ny rakitra efa voatsindry ianao, misoroka recoding. Amin'ny ankapobeny, miaraka amin'ny coefficient integer, izay mijanona aorian'ny asa izay tompon'andraikitra amin'ny fahaverezan'ny angona - DCT sy quantization, izay aseho tsara amin'ny rafitra famandrihana (noho ny wiki an'ny Bauman National Library):
Momba ny fomba hafahafa hamonjena toerana kapila mafy

Misy fomba maro azo atao amin'ny fanatsarana ny rakitra jpeg. Misy optimization tsy misy fatiantoka (jpegtran), misy optimization "tsy misy fatiantoka", izay tena mitondra zavatra hafa, saingy tsy miraharaha azy ireo izahay. Rehefa dinihina tokoa, raha ny mpampiasa dia vonona ny hampiditra vaovao iray ho iray hafa mba hampitombo ny toerana malalaka kapila, dia na optimized ny sariny hatry ny ela, na tsy te hanao izany mihitsy noho ny tahotra ny fahaverezan'ny kalitao.

F5

Ny fianakaviana iray manontolo amin'ny algorithm dia mifanaraka amin'ireo fepetra ireo, izay azonao atao ny mahafantatra ny tenanao amin'ity famelabelarana tsara ity. Ny avo indrindra amin'izy ireo dia ny algorithm F5 nataon'i Andreas Westfeld, miara-miasa amin'ny coefficients amin'ny singa famirapiratana, satria ny mason'ny olombelona no kely indrindra saro-pady amin'ny fiovany. Ambonin'izany, mampiasa teknika fametahana mifototra amin'ny fiodinana matrix izy io, izay ahafahana manao fanovana kely kokoa rehefa mampiditra fampahalalana mitovy, ny haben'ny fitoeran-javatra ampiasaina.

Ny fiovana dia midina amin'ny fampihenana ny sandan'ny coefficients amin'ny iray amin'ny fepetra sasany (izany hoe, tsy foana), izay ahafahanao mampiasa F5 hanatsara ny fitahirizana data ao amin'ny kapila mafy. Ny teboka dia ny hoe ny coefficient aorian'ny fiovana toy izany dia azo inoana fa hibodo bitika kely kokoa aorian'ny fanodikodinana Huffman noho ny fizarana statistika ny soatoavina ao amin'ny JPEG, ary ny aotra vaovao dia hanome tombony rehefa manodina azy ireo amin'ny RLE.

Ny fanovana ilaina dia miompana amin'ny fanafoanana ny ampahany tompon'andraikitra amin'ny tsiambaratelo (fanavaozana ny tenimiafina), izay mamonjy loharanon-karena sy fotoana famonoana, ary manampy mekanika hiasa amin'ny rakitra maro fa tsy iray isaky ny mandeha. Ny mpamaky dia mety tsy ho liana amin'ny fizotry ny fanovana amin'ny antsipiriany bebe kokoa, koa andao hiroso amin'ny famaritana ny fampiharana.

Teknolojia avo lenta

Mba hampisehoana ny fomba fiasan'ity fomba fiasa ity dia nampihatra ny fomba tamin'ny C madio aho ary nanao fanatsarana maromaro momba ny hafainganam-pandehan'ny famonoana sy ny fitadidiana (tsy azonao an-tsaina hoe hatraiza ny lanjan'ireo sary ireo raha tsy misy famoretana, na dia talohan'ny DCT aza). Cross-platform azo tamin'ny alalan'ny fitambaran'ny tranomboky libjpeg, pcre ΠΈ tinydir, izay isaoranay azy ireo. Izany rehetra izany dia atambatra amin'ny alΓ lan'ny 'make', ka ny mpampiasa Windows dia te-hametraka Cygwin ho an'ny tenany manokana ho an'ny fanombanana, na hiatrika irery ny Visual Studio sy tranomboky.

Ny fampiharana dia azo alaina amin'ny endrika fampitaovana console sy tranomboky. Ireo liana dia afaka mahafantatra bebe kokoa momba ny fampiasana ity farany ao amin'ny readme ao amin'ny tahiry ao amin'ny Github, ny rohy izay hapetako amin'ny faran'ny lahatsoratra.

Ahoana ny fampiasana azy?

am-pitandremana. Ny sary ampiasaina amin'ny famonosana dia voafantina amin'ny alalan'ny fikarohana mampiasa fomba fiteny mahazatra ao amin'ny lahatahiry fakany nomena. Rehefa vita, ny rakitra dia azo afindra, atao anarana ary adika amin'ny sitrapony ao anatin'ny sisin-taniny, manova ny rakitra sy ny rafitra fiasana, sns. Na izany aza, tokony hitandrina tsara ianao ary tsy hanova ny votoaty eo no ho eo amin'ny fomba rehetra. Ny fahaverezan'ny sandan'ny na dia kely iray aza dia mety hahatonga ny tsy hamerenana ny vaovao.

Rehefa vita ny fitaovana dia mamela rakitra arisiva manokana misy ny fampahalalana rehetra ilaina amin'ny famoahana azy, anisan'izany ny angona momba ny sary ampiasaina. Raha ny tena izy, dia milanja roa kilobyte eo ho eo izy ary tsy misy fiantraikany lehibe amin'ny habaka kapila misy.

Azonao atao ny mamakafaka ny fahafaha-manao azo atao amin'ny fampiasana ny saina '-a': './f5ar -a [rakitra fikarohana] [fitenenana mahazatra mifanaraka amin'ny Perl]'. Ny famenoana dia atao amin'ny baiko './f5ar -p [fihirizam-pikarohana] [fitenenana mahazatra mifanentana amin'ny Perl] [rakitra feno] [anaran'ny arisiva]', ary famafana miaraka amin'ny './f5ar -u [rakitra arisiva] [anaran'ny rakitra sitrana. ]' .

Fampisehoana asa

Mba hampisehoana ny fahombiazan'ny fomba, dia nampiakatra fanangonana sary 225 maimaim-poana momba ny alika avy amin'ny serivisy aho. Unsplash ary hita tao amin'ireo antontan-taratasy ny pdf lehibe mirefy 45 metatra amin'ny boky faharoa Art of Programming Knuta.

Tsotra ny filaharana:

$ du -sh knuth.pdf dogs/
44M knuth.pdf
633M dogs/

$ ./f5ar -p dogs/ .*jpg knuth.pdf dogs.f5ar
Reading compressing file... ok
Initializing the archive... ok
Analysing library capacity... done in 17.0s
Detected somewhat guaranteed capacity of 48439359 bytes
Detected possible capacity of upto 102618787 bytes
Compressing... done in 39.4s
Saving the archive... ok

$ ./f5ar -u dogs/dogs.f5ar knuth_unpacked.pdf
Initializing the archive... ok
Reading the archive file... ok
Filling the archive with files... done in 1.4s
Decompressing... done in 21.0s
Writing extracted data... ok

$ sha1sum knuth.pdf knuth_unpacked.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth_unpacked.pdf

$ du -sh dogs/
551M dogs/

Pikantsary ho an'ny mpankafy

Momba ny fomba hafahafa hamonjena toerana kapila mafy

Ny rakitra tsy voafono dia azo vakiana ary mbola tokony hovakina:

Momba ny fomba hafahafa hamonjena toerana kapila mafy

Araka ny hitanao, avy amin'ny 633 + 36 == 669 megabytes ny angon-drakitra ao amin'ny kapila mafy dia tonga amin'ny 551 mahafinaritra kokoa. famoretana tsy misy fatiantoka manaraka: ny fampihenana iray amin'ny iray monja dia afaka " manapaka bita roa amin'ny rakitra farany. Na izany aza, izany dia mbola very angon-drakitra, na dia tena kely, izay tsy maintsy hiaritra.

Soa ihany fa tsy hitan’ny maso mihitsy izy ireo. Eo ambanin'ny mpandroba (satria tsy afaka mitantana rakitra lehibe ny habrastorage), ny mpamaky dia afaka manombatombana ny fahasamihafana amin'ny maso sy ny hamafin'izy ireo, azo amin'ny fanesorana ny soatoavin'ny singa niova amin'ny tany am-boalohany: ny tany am-boalohany, miaraka amin'ny fampahalalana ao anatiny, ny fahasamihafana (ny loko manjavozavo no kely kokoa ny fahasamihafana eo amin'ny sakana).

Raha tokony ny famaranana

Raha jerena ireo fahasahiranana rehetra ireo, ny fividianana kapila mafy na fampiakarana ny zava-drehetra amin'ny rahona dia mety ho toy ny vahaolana tsotra kokoa amin'ny olana. Saingy na dia miaina ao anatin'ny fotoana mahafinaritra toy izany aza isika ankehitriny, dia tsy misy antoka fa rahampitso dia mbola azo atao ny miditra an-tserasera ary mampakatra ny angona fanampiny rehetra any ho any. Na mandehana any amin'ny fivarotana ary mividiana fiara mafy arivo terabyte hafa. Saingy afaka mampiasa trano efa misy foana ianao.

-> GitHub

Source: www.habr.com

Add a comment