Python - przetwarzanie bajtów

Python - przetwarzanie bajtów
mic4ael
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 2 lata
  • Postów:93
0

Ucząc się Pythona, wpadłem na pomysł, by napisać skrypt, który wczytuje plik graficzny oraz tworzy jego zmienioną odrobinę kopię. Problem mój polega na tym, że po wczytaniu kolejnych bajtów z pliku, nie wiem jak przetwarzać bajty, tak aby potem przy zapisywaniu ich do pliku docelowego były w odpowiednim "stanie". Chodzi mi o to, że mój kod musi źle przetwarzać zapisywane bajty, bo plik wynikowy jest uszkodzony. (wczytuję bajt z pliku, przetwarzam go w pewien sposób, zapisuje to pliku docelowego - taki jest mój zamiar, w skrócie)

MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:4 minuty
0

z takimi ogólnikami to możesz wznosić modły o pomoc do wszechwiedzącego Boga.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
bogdans
E tam, wystarczy dobrze przetwarzać bajty.
mic4ael
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 2 lata
  • Postów:93
0

Przypuśćmy, że chciałbym do każdego bajtu dodać pewną stałą.

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Wtedy uszkodzisz nagłówek pliku, chyba że masz na myśli "do każdego bajtu z danych obrazka, pomijając nagłówek", ale i tak wiele zależy od samego formatu tego obrazka.


Spine
  • Rejestracja:około 22 lata
  • Ostatnio:około godziny
  • Postów:6659
0

Zainteresuj się np. PIL i korzystając z jego funkcji wczytuj, modyfikuj i zapisuj obrazek:
http://www.pythonware.com/products/pil/
http://www.pythonware.com/library/pil/handbook/index.htm


🕹️⌨️🖥️🖱️🎮
mic4ael
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 2 lata
  • Postów:93
0

PIL znam, tyle że chciałem zrobić to właśnie po swojemu, bez żadnych bibliotek.

Spine
  • Rejestracja:około 22 lata
  • Ostatnio:około godziny
  • Postów:6659
0

No to musisz napisać własny odczyt pliku. Z nieskompresowanymi obrazami (BMP itp.) powinno być najłatwiej. Musisz pominąć nagłówek, i zmodyfikować tylko bajty odpowiednie dla obrazu. Przy zapisywaniu pliku musisz dodać pominięty nagłówek przed zmodyfikowanymi bajtami. Przy dodawaniu liczb do bajtów musisz też pamiętać, żeby nie wyjść poza rozmiar "okienka" (jak przekroczysz zakres to musisz obciąć).


🕹️⌨️🖥️🖱️🎮
edytowany 1x, ostatnio: Spine
mic4ael
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 2 lata
  • Postów:93
0

Ale na przykład jak kopiuję bajt po bajcie z jednego pliku graficznego do drugiego, wtedy wszystko jest ok.

Spine
napisałem Ci wszystko... pomiń bajty nagłówka!
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Em, no bo ich nie modyfikujesz :|


MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:4 minuty
0

poczytaj o najprostszym formacie graficznym np bmp, nie możesz tak po prostu dodawać wartości byle gdzie, a w przypadku formatów z kompresją to przed edycją obrazu musisz najpierw dekompresować dane. Bezpośrednie modyfikowanie skompresowanych danych lub bezmyślne modyfikowanie nagłówka, kończy się utratą spójności danych.

Tak jak pisałem napisz konkrety: co wczytujesz (jaki format pliku), jak wczytujesz (pokaż kod), bez tych podstawowych informacji nie ma co z tobą dyskutować.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.