Przesyłanie zdjęcia jako ciąg znaków.

0

Hej. Chcę np przesłać zdjęcie png jako ciąg znaków. Kiedy próbuję to zrobić czyli tworzę plik png potem kopiuję zawartość otwierając txt i tworzę nowy plik txt zapisuję tam znaki i zmieniam rozszerzenie na png to to nie działa i dostaję komunikat "prawdopodobnie ten format pliku nie jest obsługiwany"

0

Każdy plik jak podejrzysz w Hex edytorze ma swój nagłówek. Na jego podstawie programy potrafią rozpoznać typ.
https://en.m.wikipedia.org/wiki/List_of_file_signatures
Jeśli więc tworzysz plik txt to masz już w nim nagłówek. Potem kopiujesz zawartość z pliku PNG ale sam nagłówek zostaje.
Ja bym zaczął od sprawdzenia pliku w Hex edytorze.

0

Czyli plik txt ma w sobie coś mimo że ja widzę że jest pusty ?

1

Podejrzyj sobie go jakimś Hex edytorem to się przekonasz.

0

Jak free hex editor neo ?
dostaję to samo co przy otwieraniu notatnikiem

1
kamil kowalski napisał(a):

Hej. Chcę np przesłać zdjęcie png jako ciąg znaków. Kiedy próbuję to zrobić czyli tworzę plik png potem kopiuję zawartość otwierając txt i tworzę nowy plik txt zapisuję tam znaki i zmieniam rozszerzenie na png to to nie działa i dostaję komunikat "prawdopodobnie ten format pliku nie jest obsługiwany"

Jeśli plik jest mały możesz zamienić go na base64.

0

Nie możesz przesyłać pliku binarnego jako tekstu. Polegniesz na znakach nowej linii, mogą też być problemy z niektórymi innymi znakami specjalnymi oraz UTF. A jeśli chcesz otworzyć plik binarny w edytorze do plików tekstowych, to polegniesz na wszystkim naraz. Wyedytuj sobie w edytorze tekstowym jakikolwiek plik exe i bez robienia żadnych zmian spróbuj go zapisać i uruchomić (acz wieki temu edytowałem w wordpadzie scorch.exe, zmieniłem jeden string i program wystartował, zawiesił się dopiero w trakcie grania).
Standardem do przesyłania plików binarnych jako tekst jest base64, co prawda dodaje 33% rozmiaru (z każdych 8 bitów wykorzystuje tylko 6), ale w naszych czasach cóż to jest.

0

Czy przesył może być stratny? Jeśli tak to możesz skorzystać z dobrodziejstw nowoczesnej technologii i zaadaptować konwersję Image(binary) -> ASCII Art (text) -> AI augmented image recovery from ASCII Art (binary). Powodzenia!

1
jurek1980 napisał(a):

Każdy plik jak podejrzysz w Hex edytorze ma swój nagłówek. Na jego podstawie programy potrafią rozpoznać typ.

To nieprawda - pliki .txt nie mają nagłówka (*). Tak samo jak pliki .ini, .py, skrypty shellowe, obrazy dysku, itp nie mają nagłówka.

(*) BOM się nie liczy, dla nitpickujących. Można zapisać plik .txt bez BOM. Co do zasady puste pliki .txt mają 0 bajtów.

ŁF napisał(a):

Nie możesz przesyłać pliku binarnego jako tekstu. Polegniesz na znakach nowej linii, mogą też być problemy z niektórymi innymi znakami specjalnymi oraz UTF. A jeśli chcesz otworzyć plik binarny w edytorze do plików tekstowych, to polegniesz na wszystkim naraz. Wyedytuj sobie w edytorze tekstowym jakikolwiek plik exe i bez robienia żadnych zmian spróbuj go zapisać i uruchomić (acz wieki temu edytowałem w wordpadzie scorch.exe, zmieniłem jeden string i program wystartował, zawiesił się dopiero w trakcie grania).

To jest poprawna odpowiedź - z wielu różnych powodów nie możesz otworzyć dowolnego pliku jako tekst, skopiować go, wkleić gdzieś, zapisać i liczyć że dostaniesz to samo w wyniku.

Standardem do przesyłania plików binarnych jako tekst jest base64, co prawda dodaje 33% rozmiaru (z każdych 8 bitów wykorzystuje tylko 6), ale w naszych czasach cóż to jest.

Tak jak kilka osób napisało, musisz zaenkodować ten plik w base64. Wtedy dostajesz plaintext który łatwo skopiować i wkleić. Przykładowo, konwersja pliku meme.png do tekstowego pliku base64.txt:

msm@transient ~/Pictures
$ base64 meme.png > base64.txt

Wynik tego polecenia to tekst który możesz skopiować, zapisać gdzieś i zdekodować (używając base64 -d base64.txt).

Powyższe polecenia działają na Linuxie. Na windowsie da się to zrobić naokoło używając narzędzia certutil (bardzo nie polecam), za pomocą powershella (nie polecam), albo za pomocą WSL (polecam).

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