Image aus DB ausgeben

09/08/2017 01:58 Cc_Cc_Cc#1
Hallo,

ich bräuchte Hilfe unzwar wenn ich ein Bild ausgebe erscheint so etwas:


Index.php



09/08/2017 06:43 xShizoidx#2
Quote:
Originally Posted by Cc_Cc_Cc View Post
Hallo,

ich bräuchte Hilfe unzwar wenn ich ein Bild ausgebe erscheint so etwas:


Index.php



Dein Skript funktioniert. Ich erhalte
Code:
erfolg%��m�y	��g�V��[	h([X��lx�[�~$9ΠơDQ&[�éÉ�!t��� �i����@V��CD��t���3�h�h;�J�s#	�� ��p0B�߆�~�~%8� �	=��U<�h-�ʨ.f�����-\�t�-d��`�)��]��}��5�[Tt�L�A�~E+�M�N���P�<�N�:	��ʣ�3��.��'_*��2���'A��t��4?�Hb�O5�?�UHݒ�?�5���E5O���q*�a?�|Ծ����w?�J��m�F��T��ж�z�\��|U�}|�R��?e��-1�Np並�p�D��=6��!�>��_N��Z^N쇲���p��֭���벯�d�Xw�e��vó�u.��Ki��{w��������Hn��C�nGHü{�� $�]���xv��k��9��/�8�������L���]esk�����t�`��5#���"N��'���7�m�˯��ʋ�MBBT�,bW!�O��#75��?5��x�y>%�a��(R���6d3q�O�>5 ��e�>�7c�N[q�{�L�P÷��u�wr���.....
Du hast nur bei dir keine Datei ausgewählt gehabt, dies solltest du vorher überprüfen, daher kommt auch die Fehlermeldung Warning: file_get_contents(): Filename cannot be empty in
09/08/2017 07:30 Serraniel#3
Um das Bild darzustellen aus den Binärdaten musst du im Header senden das es sich um ein Bild handelt. Danach das Bild per PHP ausgeben, nicht in einem HTML Tag.

Den Folgenden Code habe ich Mal geschrieben, vielleicht kannst du ihm wiedervewerten. $banner->Image ist die URL zu einem Bild.

PHP Code:
 $info getimagesize($banner->image);
                    
$im;

                    switch(
$info[2])
                    {
                        case 
1//gif
                            
$im imagecreatefromgif($banner->image);
                            break;
                        case 
2// jpeg
                            
$im imagecreatefromjpeg($banner->image);
                            break;
                        case 
3// png
                            
$im imagecreatefrompng($banner->image);
                            break;
                    }

                    switch(
$info[2]) {
                        case 
1//gif
                            
header("Content-type: image/gif");
                            break;
                        case 
2// jpeg
                            
header("Content-type: image/jpeg");
                            break;
                        case 
3// png
                            
header("Content-type: image/png");
                            break;
                    }


                    
header('Content-Disposition: inline; filename="'.$banner->id.'.'.str_replace('image/',"",$info['mime']).'"');
                    die(
file_get_contents($banner->image)) 
09/08/2017 15:50 Cc_Cc_Cc#4
Könntest du es mal mit meinem Code zusammenfügen? Bekomme nur Fehler wie das

Würde dir auch e*Gold später senden wenn ich es später bekomme.
09/08/2017 16:43 Serraniel#5
Zeig mal den Code, was du gemacht hast, dann schau ich heute Abend nach Arbeit mal rein.
09/08/2017 17:09 xShizoidx#6
Quote:
Originally Posted by Serraniel View Post
Um das Bild darzustellen aus den Binärdaten musst du im Header senden das es sich um ein Bild handelt. Danach das Bild per PHP ausgeben, nicht in einem HTML Tag.

Den Folgenden Code habe ich Mal geschrieben, vielleicht kannst du ihm wiedervewerten. $banner->Image ist die URL zu einem Bild.

PHP Code:
 $info getimagesize($banner->image);
                    
$im;

                    switch(
$info[2])
                    {
                        case 
1//gif
                            
$im imagecreatefromgif($banner->image);
                            break;
                        case 
2// jpeg
                            
$im imagecreatefromjpeg($banner->image);
                            break;
                        case 
3// png
                            
$im imagecreatefrompng($banner->image);
                            break;
                    }

                    switch(
$info[2]) {
                        case 
1//gif
                            
header("Content-type: image/gif");
                            break;
                        case 
2// jpeg
                            
header("Content-type: image/jpeg");
                            break;
                        case 
3// png
                            
header("Content-type: image/png");
                            break;
                    }


                    
header('Content-Disposition: inline; filename="'.$banner->id.'.'.str_replace('image/',"",$info['mime']).'"');
                    die(
file_get_contents($banner->image)) 


Er hat die Daten als Blob in der Datenbank und nicht auf dem FTP Server hochgeladen.


Du kannst mit HTML und dem img Tag einen base64 kodierten String übergeben. Ich habe das mal kurz für dich gemacht ([Only registered and activated users can see links. Click Here To Register...]). In der Datenbank habe ich eine Spalte ext hinzugefügt, wo der Dateityp gespeichert wird.
09/08/2017 21:02 Cc_Cc_Cc#7
Quote:
Originally Posted by xShizoidx View Post
Er hat die Daten als Blob in der Datenbank und nicht auf dem FTP Server hochgeladen.


Du kannst mit HTML und dem img Tag einen base64 kodierten String übergeben. Ich habe das mal kurz für dich gemacht ([Only registered and activated users can see links. Click Here To Register...]). In der Datenbank habe ich eine Spalte ext hinzugefügt, wo der Dateityp gespeichert wird.
Danke dir und Serraniel !

Nur eine kurze Frage. Woran lag es denn jetzt das er es so ausgegeben hat bei mir?
09/08/2017 21:45 False#8
Quote:
Originally Posted by Cc_Cc_Cc View Post
Danke dir und Serraniel !

Nur eine kurze Frage. Woran lag es denn jetzt das er es so ausgegeben hat bei mir?
Du hast einfach nur das Bild ausgegeben und der Browser hat die Das Bild auch bekommen, jedoch weiß der Browser nicht was damit zu tun ist (Ist es ein Bild? Ein Video ? Einfach nur Text ? etc..).

Daher musst du Header mit dem MIME-Type mitsenden.
09/09/2017 17:00 xShizoidx#9
Quote:
Originally Posted by Cc_Cc_Cc View Post
Danke dir und Serraniel !

Nur eine kurze Frage. Woran lag es denn jetzt das er es so ausgegeben hat bei mir?
Wenn du das Bild ansonsten direkt ausgegeben haben willst und nichts weiteres auf der Seite ist, kannst du es auch so machen :
Code:
<?php 
	header("Content-type: image/jpeg");
	$img = "Bild in Base64 kodiert";
	echo base64_decode($img);
?>
Kommt aber drauf an, wie du es haben willst.