Babagan cara aneh kanggo ngirit ruang hard disk

Pangguna liyane pengin nulis potongan data anyar menyang hard drive, nanging ora duwe papan sing cukup kanggo nindakake iki. Aku uga ora pengin mbusak apa-apa, amarga "kabeh iku penting banget lan perlu." Lan apa sing kudu kita lakoni?

Ora ana sing duwe masalah iki. Ana terabyte informasi ing hard drive kita, lan jumlah iki ora cenderung suda. Nanging carane unik iku? Ing pungkasan, kabeh file mung set bit saka dawa tartamtu lan, paling kamungkinan, sing anyar ora akeh beda saka sing wis disimpen.

Cetha yen nggoleki informasi sing wis disimpen ing hard drive, yen ora gagal, paling ora tugas sing efektif. Ing sisih liya, yen bedane cilik, sampeyan bisa nyetel sethithik ...

Babagan cara aneh kanggo ngirit ruang hard disk

TL;DR - upaya kaping pindho kanggo ngomong babagan cara aneh kanggo ngoptimalake data nggunakake file JPEG, saiki ing wangun sing luwih bisa dingerteni.

Babagan bit lan prabΓ©dan

Yen sampeyan njupuk rong bagΓ©yan rampung acak data, ing rata-rata setengah saka bit padha ngemot pas. Pancen, antarane tata letak bisa kanggo saben pasangan ('00, 01, 10, 11β€²), persis setengah duwe nilai padha, kabeh iku prasaja kene.

Nanging mesthi, yen kita mung njupuk loro file lan pas siji kanggo kaloro, banjur kita bakal kelangan siji. Yen kita nyimpen owah-owahan, kita mung bakal reinvent enkoding delta, sing ana kanthi becik tanpa kita, sanajan ora biasane digunakake kanggo tujuan sing padha. Kita bisa nyoba nglebokake urutan sing luwih cilik menyang urutan sing luwih gedhe, nanging uga ana risiko kelangan segmen data sing kritis yen digunakake kanthi sembrono karo kabeh.

Antarane apa lan apa bedane bisa diilangi? Yaiku, file anyar sing ditulis pangguna mung minangka urutan bit, sing ora bisa ditindakake kanthi mandiri. Banjur sampeyan mung kudu golek bit kuwi ing hard drive sing padha bisa diganti tanpa kudu nyimpen prabédan, supaya sampeyan bisa urip mundhut tanpa jalaran serius. Lan iku ndadekake pangertèn kanggo ngganti ora mung file ing FS dhewe, nanging sawetara informasi kurang sensitif nang. Nanging kang siji lan carane?

Metode pas

File kompres lossy teka kanggo ngluwari. Kabeh jpeg, mp3 lan liya-liyane, sanajan kompresi lossy, ngemot pirang-pirang bit sing bisa diganti kanthi aman. Bisa nggunakake teknik canggih sing ora bisa diowahi komponen ing macem-macem tahapan enkoding. Ngenteni. Techniques majeng ... modifikasi imperceptible ... siji dicokot menyang liyane ... iku meh kaya steganografi!

Pancen, nanem informasi siji menyang liyane kaya cara dheweke ora ana liyane. Aku uga kesengsem karo imperceptibility saka owah-owahan sing digawe kanggo indra manungsa. Ing endi dalan sing beda-beda ana ing rahasia: tugas kita teka menyang pangguna ngetik informasi tambahan menyang hard drive; mung bakal cilaka dheweke. Dheweke bakal lali maneh.

Mulane, sanajan bisa digunakake, kita kudu nggawe sawetara modifikasi. Banjur aku bakal ngandhani lan nuduhake nggunakake conto salah sawijining metode sing ana lan format file sing umum.

Babagan jakal

Yen pancene remet, iku paling compressible ing donya. Kita, mesthi, ngomong babagan file JPEG. Ora mung ana macem-macem alat lan cara sing wis ana kanggo nglebokake data, nanging uga minangka format grafis sing paling populer ing planet iki.

Babagan cara aneh kanggo ngirit ruang hard disk

Nanging, supaya ora melu breeding asu, sampeyan kudu mbatesi lapangan kegiatan ing file format iki. Ora ana sing seneng kothak monochrome sing katon amarga kompresi sing berlebihan, mula sampeyan kudu mbatesi sampeyan nggarap file sing wis dikompres, nyingkiri recoding. Luwih khusus, kanthi koefisien integer, sing tetep sawise operasi sing tanggung jawab kanggo mundhut data - DCT lan kuantisasi, sing ditampilake kanthi sampurna ing skema enkoding (matur nuwun kanggo wiki Perpustakaan Nasional Bauman):
Babagan cara aneh kanggo ngirit ruang hard disk

Ana akeh cara kanggo ngoptimalake file jpeg. Ana optimasi lossless (jpegtran), ana optimasi "ora rugi", sing sejatine nyumbang liyane, nanging kita ora peduli. Sawise kabeh, yen pangguna wis siyap nglebokake informasi siji menyang liyane kanggo nambah ruang disk sing gratis, mula dheweke wis ngoptimalake gambar sing wis suwe, utawa ora pengin nindakake iki amarga wedi ilang kualitas.

F5

Kabeh kulawarga algoritma cocog karo kahanan kasebut, sing bisa sampeyan kenal ing presentation apik iki. Sing paling maju yaiku algoritma F5 dening Andreas Westfeld, nggarap koefisien komponen padhang, amarga mripat manungsa paling ora sensitif marang owah-owahan. Kajaba iku, nggunakake teknik embedding adhedhasar enkoding matriks, sing ndadekake owah-owahan luwih sithik nalika ngemot informasi sing padha, luwih gedhe ukuran wadah sing digunakake.

Owah-owahan kasebut mudhun kanggo nyuda nilai absolut saka koefisien kanthi siji ing kahanan tartamtu (yaiku, ora mesthi), sing ngidini sampeyan nggunakake F5 kanggo ngoptimalake panyimpenan data ing hard drive. Intine yaiku yen koefisien sawise owah-owahan kasebut bakal entuk luwih sithik sawise enkoding Huffman amarga distribusi statistik nilai ing JPEG, lan nol anyar bakal entuk bathi nalika ngodhe nggunakake RLE.

Modifikasi sing dibutuhake kanggo ngilangi bagean sing tanggung jawab kanggo rahasia (nyusun ulang tembung sandhi), sing ngirit sumber daya lan wektu eksekusi, lan nambah mekanisme kanggo nggarap akeh file tinimbang siji-sijine. Sing maca ora mungkin kasengsem ing proses pangowahan kanthi luwih rinci, mula ayo pindhah menyang katrangan babagan implementasine.

Teknologi tinggi

Kanggo nduduhake cara kerjane pendekatan iki, aku ngetrapake metode kasebut ing C murni lan nindakake sawetara optimasi ing babagan kecepatan lan memori eksekusi (sampeyan ora bisa mbayangake sepira bobote gambar kasebut tanpa kompresi, sanajan sadurunge DCT). Cross-platform digayuh nggunakake kombinasi perpustakaan libjpeg, ngetrap ΠΈ tinydir, kanggo sing kita matur nuwun. Kabeh iki digabungake dening 'make', supaya pangguna Windows pengin nginstal sawetara Cygwin kanggo awake dhewe kanggo evaluasi, utawa menehi hasil karo Visual Studio lan perpustakaan dhewe.

Implementasine kasedhiya ing wangun sarana console lan perpustakaan. Sing kasengsem bisa ngerteni luwih akeh babagan nggunakake sing terakhir ing readme ing repositori ing Github, link sing bakal daklampirake ing mburi kiriman.

Carane nggunakake?

kanthi ati-ati. Gambar sing digunakake kanggo kemasan dipilih kanthi nggoleki nggunakake ekspresi reguler ing direktori root sing diwenehake. Sawise rampung, file bisa dipindhah, diganti jeneng lan disalin ing bakal ing wates sawijining, ngganti file lan sistem operasi, etc. Nanging, sampeyan kudu ati-ati banget lan ora ngganti isi langsung ing sembarang cara. Mundhut regane malah siji bisa nggawe ora bisa mbalekake informasi.

Sawise rampung, sarana ninggalake file arsip khusus sing ngemot kabeh informasi sing dibutuhake kanggo mbongkar, kalebu data babagan gambar sing digunakake. Dhewe, bobote kira-kira sawetara kilobyte lan ora duwe pengaruh sing signifikan ing ruang disk sing dikuwasani.

Sampeyan bisa nganalisa kapasitas sing bisa nggunakake gendera '-a': './f5ar -a [folder telusuran] [ekspresi reguler sing kompatibel karo Perl]'. Pengepakan rampung kanthi printah './f5ar -p [folder telusuran] [ekspresi reguler sing kompatibel karo Perl] [file sing dikemas] [jeneng arsip]', lan mbongkar nganggo './f5ar -u [file arsip] [jeneng file sing wis pulih. ]' .

Demonstrasi karya

Kanggo nuduhake efektifitas metode kasebut, aku ngunggah koleksi 225 foto asu gratis saka layanan kasebut. Unsplash lan ditemokake ing dokumen pdf gedhe 45 meter saka volume kapindho Seni Pemrograman Knuta.

Urutane cukup prasaja:

$ 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/

Gambar kanggo penggemar

Babagan cara aneh kanggo ngirit ruang hard disk

File sing ora dibungkus bisa lan kudu diwaca:

Babagan cara aneh kanggo ngirit ruang hard disk

Nalika sampeyan bisa ndeleng, saka asli 633 + 36 == 669 megabyte data ing hard drive, kita teka luwih penake 551. prabΓ©dan radikal kuwi diterangake dening nyuda ing Nilai saka koefisien, kang mengaruhi sing. kompresi lossless sakteruse: nyuda siji-siji bisa gampang " ngethok saperangan bita saka file final. Nanging, iki isih mundhut data, sanajan cilik banget, sing kudu sampeyan lakoni.

Untunge, dheweke pancen ora katon ing mripat. Ing spoiler (amarga habrastorage ora bisa nangani file gedhe), maca bisa ngevaluasi prabΓ©dan loro dening mripat lan kakiyatan, dijupuk dening subtracting nilai komponen diganti saka asline: aslinipun, karo informasi nang, bedane (warna sing luwih kusam, luwih cilik bedane blok).

Tinimbang kesimpulan

Ngelingi kabeh kesulitan kasebut, tuku hard drive utawa ngunggah kabeh menyang awan bisa uga katon kaya solusi sing luwih gampang kanggo masalah kasebut. Nanging sanajan kita saiki urip ing wektu sing apik banget, ora ana jaminan yen sesuk isih bisa online lan ngunggah kabeh data ekstra ing endi wae. Utawa menyang toko lan tuku hard drive ewu terabyte liyane. Nanging sampeyan bisa tansah nggunakake omah sing wis ana.

-> GitHub

Source: www.habr.com

Add a comment