Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MSSQL] (Subiekt) Wyciąganie zdjęć z pola IMAGE do pliku
Elber
post 25.01.2012, 03:49:59
Post #1





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


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 ?


--------------------
GG: 564555
Go to the top of the page
+Quote Post
askone
post 25.01.2012, 09:45:47
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

Ostrzeżenie: (0%)
-----


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


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
Elber
post 25.01.2012, 10:47:58
Post #3





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował Elber 25.01.2012, 10:56:57


--------------------
GG: 564555
Go to the top of the page
+Quote Post
piotrooo89
post 25.01.2012, 10:54:30
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




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.


--------------------
Go to the top of the page
+Quote Post
Elber
post 25.01.2012, 10:57:36
Post #5





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


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


--------------------
GG: 564555
Go to the top of the page
+Quote Post
piotrooo89
post 25.01.2012, 11:02:19
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a jak byś zrobił:

  1. header('Content-type: image/jpeg');
  2. echo $foto['zd_Zdjecie'];


--------------------
Go to the top of the page
+Quote Post
Elber
post 25.01.2012, 13:44:18
Post #7





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


Też nic nie wyświetla sad.gif

Z tego co wyczytałem to "Pole IMAGE w MSSQL to zwykłe pole bitowe"

Ten post edytował Elber 25.01.2012, 13:48:54


--------------------
GG: 564555
Go to the top of the page
+Quote Post
piotrooo89
post 25.01.2012, 13:48:42
Post #8


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




pokaż cały kod jak to robisz.


--------------------
Go to the top of the page
+Quote Post
askone
post 25.01.2012, 13:52:59
Post #9





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

Ostrzeżenie: (0%)
-----


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


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
Elber
post 25.01.2012, 13:57:02
Post #10





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


  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.  


--------------------
GG: 564555
Go to the top of the page
+Quote Post
nospor
post 25.01.2012, 13:58:22
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$foto2 = $foto['zd_Zdjecie'];
echo $foto2['zd_Zdjecie'];
Patrz uważniej co piszesz.

echo $foto2;


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Elber
post 25.01.2012, 16:37:10
Post #12





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


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ć


--------------------
GG: 564555
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 02:51