Python - przetwarzanie bajtów

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)

0

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

0

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

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.

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

0

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

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ąć).

0

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

0

Em, no bo ich nie modyfikujesz :|

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ć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1