Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konwersja application/octet-stream na jpg
Forum PHP.pl > Forum > PHP
hettmix
Witam.

Posiadam plik o rozszerzeniu *.bif utworzony przez kamerę urządzenia rejestrującego. Mime type tego pliku to application/octet-stream. W nagłówku tego pliku jest coś takiego:

Cytat
BIFFII...........JFIF......
HEX - 42 49 46 46 49 49


W systemie Windows plik nie jest prawidłowo rozpoznawany i nie można go wyświetlić, za to w XnView otwiera się bez problemu. XnView podaje, że jest to JPEG based file.

Funkcja:
  1. $data = file_get_contents($target);
  2. $image = imagecreatefromstring($data);
  3. print $image;

zwraca - Warning: imagecreatefromstring(): Data is not in a recognized format


Jak mogę wyświetlić ten plik w przeglądarce lub dokonać jego konwersji to formatu *.jpg ?. Czy nie jest to przypadkiem plik skompresowany ?.
redeemer
Mi to wygląda na plik JPEG z dodatkowym "magic number" na początku. Jak możesz to wystaw gdzieś taki plik.
hettmix
Cytat(redeemer @ 23.09.2013, 10:54:01 ) *
Mi to wygląda na plik JPEG z dodatkowym "magic number" na początku. Jak możesz to wystaw gdzieś taki plik.


Poniżej link do pliku:
Link do pliku *.bif
redeemer
Tak jak podejrzewałem, wystarczy wyciąć niepotrzebne bajty z przodu (w przypadku gdy ich liczba jest stała):
  1. $fname = '90000_001.bif';
  2. $data = substr(file_get_contents($fname), 71);
  3. file_put_contents($fname.'.jpeg', $data);
Gdy ich długość jest zmienna trzeba wyciąć wszystko do napotkania:
Kod
0xff 0xdb 0xff 0xe0 0x00 0x10 0x04A 0x46 0x49 0x46
hettmix
Cytat(redeemer @ 23.09.2013, 12:43:39 ) *
Tak jak podejrzewałem, wystarczy wyciąć niepotrzebne bajty z przodu (w przypadku gdy ich liczba jest stała):
  1. $fname = '90000_001.bif';
  2. $data = substr(file_get_contents($fname), 71);
  3. file_put_contents($fname.'.jpeg', $data);
Gdy ich długość jest zmienna trzeba wyciąć wszystko do napotkania:
Kod
0xff 0xdb 0xff 0xe0 0x00 0x10 0x04A 0x46 0x49 0x46


Thx - śmiga aż miło...

Ale korzystając z okazji mam jeszcze jedno pytanko, ponieważ potrzebuję po wyświetleniu tego pliku w przeglądarce wyciąć fragment obrazu, który później będzie umieszczony w szablonie pdf. Kiedyś widziałem w jakimś programie taką opcję dzięki której można było przy pomocy myszki (poziomy i pionowy kursor) wyciąć np. prostokątny obszar. Szczerze mówiąc nie mam pojęcia jak się do tego zabrać.
redeemer
Jeśli chodzi Ci o front-end to możesz skorzystać np z JCrop. Masz tam nawet Live demo z przykładowym kodem PHP.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.