php bilder in img tag

diel2001

Mitglied
Kann mir hier jemand helfen? Was mache ich falsch ?
Ich möchte folgendes in einem html img tag verwenden:

<img src="www.test.de/bild-1235.php">

Durch die .htaccess datei soll der Teil "bild-1235.php" auf eine andere PHP datei zeigen und
dadurch das Bild laden und anzeigen. Ich möchte das aus SEO-Gründen so verwenden, um in der Bildurl auch einen bestimmten Titel zu verwenden.

Ich habe schon bei Google gesucht, aber alle Beispiele haben immer eine Fehlermeldung ausgeben.

"Die Grafik ... kann nicht ausgeben werden, weil sie Fehler enthält"

Unten ist der Code aufgeführt, welchen ich schon ausprobiert habe.

Danke schonmal für eure Hilfe
PHP:
 <?php
 
 
 
 function GetImageFromUrl($link)
 
{
 
$ch = curl_init();
 
curl_setopt($ch, CURLOPT_POST, 0);
 
curl_setopt($ch,CURLOPT_URL,$link);
 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 
$result=curl_exec($ch);
 
curl_close($ch);
 
return $result;
 
}

$sourcecode=GetImageFromUrl("http://images180.affili.net/001442/1/72dd0366c5649e0421986dac2e1b22f1.jpg");

header('Content-type: image/jpeg');
 imagejpeg($sourcecode);
 
/*      $im = "http://images180.affili.net/001442/1/72dd0366c5649e0421986dac2e1b22f1.jpg";
      if($im){
         header('content-type: image/jpeg');
         imagejpeg($im);
      }else
         echo "error";*/
 
 
/*$imagePath = 'http://images180.affili.net/001442/1/72dd0366c5649e0421986dac2e1b22f1.jpg';
header('Content-type: image/jpeg'); // For JPEG images.
header('Content-length: ' . filesize($imagePath));
readfile($imagePath);*/

 
 
/*header('Content-type: image/jpeg');
$p = file_get_contents('http://images180.affili.net/001442/1/72dd0366c5649e0421986dac2e1b22f1.jpg');
echo $p;*/

/*if(true === function_exists('curl_init')){
  $ch = curl_init('http://images180.affili.net/001442/1/72dd0366c5649e0421986dac2e1b22f1.jpg');
  curl_setopt_array(
    $ch,
    array(
      CURLOPT_RETURNTRANSFER  => true
    )
  );
  $data = curl_exec($ch);
  curl_close($ch);
  header('Content-type: image/jpeg');
  echo $data;
}*/
?>
 

Anhänge

  • browser_ausgabe.png
    browser_ausgabe.png
    33,4 KB · Aufrufe: 11
Zuletzt bearbeitet:
Hi und Willkommen bei tutorials.de,

mach die fehlerhafte Bilddatei in einem Text/Hexeditor auf.
Wahrscheinlich sieht man da schon, was los ist.

Wenn du dir nicht sicher bist, wie etc. lad die Datei hier rauf
(Klammersymbol beim erweiterten Antworten)
 
Hallo sheel,
die bilddatei ist nicht fehlerhaft.
Das Php-Script funktioniert so aber leider nicht.
Ich bekomme es nicht hin, wenn ich das Script aufrufe, dass ich das Bild angezeigt kriege.
 
Öffne das Bild in einem Editor wie Notepad++ und poste davon mal einen Screenshot (also von dem geöffneten Bild im Editor).

EDIT: Achso, natürlich wenn das Bild über das PHP-Script abgeholt wurde.
 
Jup, genau das meinte ich.

War mir klar, dem TO aber offensichtlich nicht. Also hier das Rezept, damit wir dir helfen können:

1. Ändere dein PHP-Script in der letzten Zeile, wo imagejpeg aufgerufen wird:
PHP:
imagejpeg($sourcecode, 'irgendeindateiname.jpg');

2. Rufe das PHP-Script im Browser auf.
3. Öffne die Datei irgendeindateiname.jpg im Editor
4. Erstelle vom Editor einen Screenhot, damit man den Inhalt sehen kann
5. Poste den Screenshot hier im Thread als Anhang
 
So ich habe es so ausprobiert und ich bekomme die Fehlermeldung aus dem Anhang im ersten Post.
Es wird leider keine Datei erzeugt, um sie anzuzeigen.
Habt ihr eine Idee, woran das liegen kann ?
 
Das meinten wir nicht.
Da, wo der Screenshot angezeigt wird, geh auf Datei -> Speichern unter
Abspeichern, dann diese Datei mit dem Editor öffnen oder hier raufladen.
 
So das steht in dem Quelltext der Datei
Code:
<br />
<b>Warning</b>:  imagejpeg() expects parameter 1 to be resource, string given in <b>/home/diel/php/test/image.php</b> on line <b>28</b><br />
 
Diese Meldung bedeutet, das in der Variable $sourcecode eine Zeichenkette ist und nicht ein Wert vom Typ resource. Was bedeutet das nun?

1. curl liefert den kompletten HTTP-Response, sprich alles inkl. der HTTP-Header. Diese gehören aber nicht in ein Bild. Also schaltet man die Header-Rückgabe von curl aus.

2. curl liefert die Rückgabe des HTTP-Contents als String. Das heißt, die Bilddaten stehen als Zeichenkette in der Rückgabe. Also muss man diese Zeichenkette noch in eine Image-Resource umwandeln.


Ändere diesbezüglich die Funktion GetImageFromUrl() folgendermaßen ab:

PHP:
function GetImageFromUrl($link)
{
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_POST, 0);
  curl_setopt($ch,CURLOPT_URL,$link);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_FAILONERROR, 1);
  curl_setopt($ch, CURLOPT_HEADER, 0);  // Keine Header im Rückgabewert

  $result=curl_exec($ch);
  // Ein bisschen Fehlerbehandlung einbauen:
  if( curl_errno( $ch ) || $result === false )
  {
    die( curl_error( $ch ) );
  }
  curl_close($ch);

  // Rückgabe-Zeichenkette in eine Image-Resource konvertieren:
  $result = imagecreatefromstring( $result );

  // für Debugging einkommentieren:
  //var_dump( $result );

  return $result;
 }

Ich habe mir erlaubt, noch ein bisschen Fehlerbehandlung einzubauen. Es ist alles kommentiert, und sollte nachvollziehbar sein. Aber ungetestet, also keine Garantie :-)
 
Zurück