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ă:
- Comparația sumelor de control SHA-256.
- Diferite dimensiuni de fișiere.
- 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)?