Puncte:2

Obțineți date Pixel din JPG/JPEG, dar încă aduceți integritatea?

drapel in

Din câte știu eu, JPG este un format de compresie a imaginii cu pierderi

Între timp, BMP este un format de imagine în general necomprimat, a cărui structură de fișiere constă din bitmapFileHeader (14 octeți) și bitmapInfoHeader (40 octeți), restul fiind date pixeli.

Așa că trebuie doar să trec primii 54 de octeți și să-i stochez ca variabilă HEADER și să stochez restul în variabila PIXELDATA.

În această stare, pot cripta și decripta liber PIXELDATA și îl pot recombina cu HEADER. Pentru ca integritatea fișierului să fie menținută.

Dar în cazul JPG este diferit. Aș dori să încerc să citesc pixelii manual, dar nu știu în ce poziție sunt octeții de index (spre deosebire de BMP care omite 54 de octeți).

Folosesc Python cu diverse biblioteci precum PIL sau Numpy. Ambii au reușit să citească Pixeli, dar atunci când au fost salvati ca fișier JPG nou, acesta a fost diferit de cel original, prin aceea că:

  1. Comparația sumelor de control SHA-256.
  2. Diferite dimensiuni de fișiere.
  3. Unele dintre culorile pixelilor se schimbă față de original dacă îl priviți mai detaliat.

Întrebarea mea este, există o altă modalitate de a citi datele pixeli ale unui fișier JPG, dar totuși să ofere integritatea fișierului JPG original atunci când este salvat într-un fișier JPG nou (aceeași sumă de control, dimensiunile fișierului și, desigur, culoarea pixelilor)?

knaccc avatar
drapel es
Cred că întrebarea dvs. poate fi simplificată astfel: Există o modalitate de a crea un fișier JPG care poate fi comprimat și decomprimat în mod repetat fără ca pixelii să se schimbe? Sau poate doriți doar să știți cum să puneți un antet diferit pe un fișier JPG existent fără a fi nevoie să decomprimați și să recomprimați pixelii.
DannyNiu avatar
drapel vu
J2K poate fi folosit fără pierderi. Dacă puteți găsi o bibliotecă care face codificare deterministă JPEG2000 și că formatul este interoperabil cu aplicațiile dvs., atunci cred că problema este rezolvată.
drapel ph
Menționați criptarea în întrebarea dvs., dar se pare că aceasta este într-adevăr o întrebare despre formatele de imagine.
drapel ph
Și există comentariul evident că cel mai simplu mod de a nu salva o versiune diferită este să nu o salvezi deloc. Puteți urmări dacă aveți modificări pe care doriți să le salvați? Altfel, compresia cu pierderi va comprima cu pierderi.
Gilles 'SO- stop being evil' avatar
drapel cn
Votez închiderea acestei întrebări, deoarece este vorba despre formatele de imagine și compresia. Nu este implicată securitatea.
Puncte:1
drapel jp

În JPG pixelii nu sunt stocați. Ele sunt derivate în timpul de execuție, pe măsură ce utilizatorul citește fișierul. Ceea ce este stocat sunt câțiva factori de modificare a culorii într-un anumit bloc, de exemplu 8 pe 8 pixeli.

Datele care sunt stocate, acești factori, conțin mult mai puține informații decât ar avea pixelii.

Prin urmare, nu puteți crea un JPG cu date perfecte de pixeli. Chiar dacă încercați, acești factori care stochează de fapt datele, nu conțin destui biți pentru a vă reprezenta pixelii.

Aceasta este pentru majoritatea utilizării JPG. Ai putea încerca niște formate excesive, care stochează mai multe date per pixel, comparabile cu BMP. Căutați JPG fără pierderi atunci.Rețineți că o mulțime de servicii online vor re-comprima imaginea. Distrugerea datelor în acest proces.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.