Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MSSQL] (Subiekt) Wyciąganie zdjęć z pola IMAGE do pliku
Forum PHP.pl > Forum > Przedszkole
Elber
Witam,

mam problem, mam serwer MSSQL'a w którym jest baza subiekta do którego łączę z php (2 odrębne maszyny oddzielone tysiącami kilometrów) i chciałbym wyświetlić zdjęcie danego produktu w przeglądarce z poziomu php tylko nie za bardzo mi to wychodzi...
próbowałem:


  1. $foto = mssql_fetch_array($foto_query);
  2. header('Content-type: image/jpeg');
  3. imagejpeg(base64_decode($foto['zd_Zdjecie']));


jednak z headerem nic nie wyświetla a bez niego "Warning: imagejpeg() expects parameter 1 to be resource, string given in ...." bez base64_decode() też ten sam error.

Próbowałem też

  1. $foto = mssql_fetch_array($foto_query);
  2. $make_foto = base64_decode($foto['zd_Zdjecie']);
  3. $img = imagecreatefromstring($make_foto);
  4. //header('Content-type: image/jpeg');
  5. imagejpeg($img);


jednak wywala taki błąd "Warning: imagecreatefromstring(): Empty string or invalid image in ..."

Jak mam wyświetlić te fotki ?
askone
A jesteś pewien, że w bazie masz zapisane zdjęcia w postaci binarnej? Osobiście obstawiałbym na nazwę lub pełną ścieżkę do pliku zapisanego gdzieś na dysku...
Zrób var_dump i zobacz co pobierasz z bazy.

Pozdrawiam
Elber
Z bazy pobiera mi się taki ciąg string(64512) i pełno znaków -> http://pastebin.com/8g2ynDBU

Teraz jak tam:
  1. $make_foto = $foto['zd_Zdjecie'];
  2. $img = imagecreatefromstring($make_foto);
  3. imagejpeg($img);


to nie mam błędu, tylko wyświetla mi się http://pastebin.com/v1QRYxea
piotrooo89
musisz wysłać nagłówki żeby było wiadomo jak to ma być obsłużone.

używaj odpowiednich tagów do swoich listingów.
Elber
Jak dam tak:
  1. $make_foto = $foto['zd_Zdjecie'];
  2. $img = imagecreatefromstring($make_foto);
  3. header('Content-type: image/jpeg');
  4. imagejpeg($img);


to nie wyświetla się nic, pusta biała strona
piotrooo89
a jak byś zrobił:

  1. header('Content-type: image/jpeg');
  2. echo $foto['zd_Zdjecie'];
Elber
Też nic nie wyświetla sad.gif

Z tego co wyczytałem to "Pole IMAGE w MSSQL to zwykłe pole bitowe"
piotrooo89
pokaż cały kod jak to robisz.
askone
Spróbuj tak:
  1. header("Content-type: image/jpeg");
  2. echo 'data:image/jpeg;base64,' . base64_encode($image_data);


Możliwe, iż wywołanie base64_encode okaże się zbędne, ale nie mam możliwości sprawdzić tego teraz

Pozdrawiam
Elber
  1. $foto_query = mssql_query('SELECT TOP 1 zd_Zdjecie FROM tw_ZdjecieTw WHERE zd_IdTowar = "'.$data['tw_Id'].'"');
  2. $foto = mssql_fetch_assoc($foto_query);
  3. $foto2 = $foto['zd_Zdjecie'];
  4. header('Content-type: image/jpeg');
  5. echo $foto2['zd_Zdjecie'];
  6.  
nospor
$foto2 = $foto['zd_Zdjecie'];
echo $foto2['zd_Zdjecie'];
Patrz uważniej co piszesz.

echo $foto2;
Elber
Cytat(nospor @ 25.01.2012, 13:58:22 ) *
$foto2 = $foto['zd_Zdjecie'];
echo $foto2['zd_Zdjecie'];
Patrz uważniej co piszesz.

echo $foto2;

No przypadkiem bo w kodzie mam dobrze ... znowu nie działa sad.gif

  1. $foto_query = mssql_query('SELECT TOP 1 zd_Zdjecie FROM tw_ZdjecieTw WHERE zd_IdTowar = "'.$data['tw_Id'].'"');
  2. $foto = mssql_fetch_array($foto_query);
  3. $foto2 = $foto['zd_Zdjecie'];
  4. header("Content-type: image/jpeg");
  5. echo $foto2;


Nie zwraca nic

bez headera zwraca i z echo base64_encode($foto2) zwraca http://pastebin.com/HEkU87Vf



Jak dam
  1. $img = imagecreatefromstring($foto2);
  2. echo $img;


to zwraca Resource id #9

Jak dam
echo base64_decode($foto2);

to mi zwraca znak Ÿ

Postęp biggrin.gif

jak dam file_put_contents("zs.jpg", $foto2);

to tworzy mi zdjęcie w katalogu ale tylko trochę fotki widać smile.gif

Kod
Directive    Local Value    Master Value
mssql.allow_persistent    On    On
mssql.batchsize    0    0
mssql.charset    no value    no value
mssql.compatability_mode    Off    Off
mssql.connect_timeout    5    5
mssql.datetimeconvert    On    On
mssql.max_links    Unlimited    Unlimited
mssql.max_persistent    Unlimited    Unlimited
mssql.max_procs    Unlimited    Unlimited
mssql.min_error_severity    10    10
mssql.min_message_severity    10    10
mssql.secure_connection    Off    Off
mssql.textlimit    65536    65536
mssql.textsize    65536    65536
mssql.timeout    60    60


tu są ustawienia php ... mam coś zmienićquestionmark.gif czy to nie wina ustawień że tylko trochę foty widać questionmark.gif

Zwiększyłem
mssql.textlimit = 20971520
mssql.textsize = 20971520

i jest OK w końcu wink.gif zwiększyć jeszcze te 2 parametry questionmark.gif czy wystarczy questionmark.gif ewentualnie jak to obliczyć
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.