Dinn: Mit PHP Bilder ausgeben klappt nicht

Hallo,

ich möchte auf meiner "Visitenkartenseite" ein Paar Bilder aus meinem Blog anzeigen.
Da ich aber nur mir die Rechte gegeben habe(und das auch vorerst nicht ändern möchte) auf das Verzeichnis des Bolgs zuzugreifen, kann ich das ganze nicht einfach über einen Imagetag in Html machen.
Doch wenn ich in PHP das Bild ausgeben möchte, wird es nicht angezeigt selbst, wenn ich die Rechte doch änder.

Picture.php

  
<?php  
    include_once '../classes/db.class.php';  
    include_once '../data/mysql_data.ini.php';  
  
    $lc_db = new db(L_C_SQL_HOST, L_C_SQL_USER, L_C_SQL_PW, L_C_SQL_DATABASE);  
  
    //Sucht durch Zufall Bilder von Lc aus und gibt sie aus  
    $lc_db->query("SELECT id FROM news WHERE Picture != ''");  
    $ids = array();  
    while($row = $lc_db->fetch_object()){  
        $ids[] = $row->id;  
    }  
    $size = sizeof($ids)-1;  
  
    $lc_db->query("SELECT Picture FROM news WHERE id = ".$ids[rand(0, $size)]);  
    $row = $lc_db->fetch_object();  
    $file = 'http://licentious-creativity.de/images/uploads/'.$row->Picture;  
    unset($lc_db);  
  
    header("Content-Type: image/jpeg");  
    $img = imagecreatefromjpeg($file);  
	imagejpeg($img);  
?>  

Index.html

  
...  
<body>  
<img src="picture.php" alt="Ein Bild aus meinem Blog">  
</body>  
</html>  

Könnte mir jemand vielleicht den feher nennen, den ich mache und bitte nicht einfach nur Verweise auf andere Seiten geben.

Gruß
Dinn

  1. Hi,

    erhältst du eine Fehlermeldung wenn du Picture.php direkt aufrufst?

    ~dave

    1. Nein, dort ist als alternative nur der Pfad der Picture.php angezeigt

      Dinn

      1. Hi,

        Nein, dort ist als alternative nur der Pfad der Picture.php angezeigt

        Den Satz verstehe ich nicht.
        Du rufst im Browser die Picture.php auf und es kommt _was_ vom Server?

        Du hast das error_reporting richtig eingestellt um auch alle Fehler zu sehen?

        ~dave

        1. Nein, dort ist als alternative nur der Pfad der Picture.php angezeigt

          Im Imagetag gibt es alt="" und das gibt er aus.
          Keine Fehlermeldungen werden angezeigt:/ Obwohl ich Error_reporting auf E_ALL hab.

          1. Hi,

            Nein, dort ist als alternative nur der Pfad der Picture.php angezeigt
            Im Imagetag gibt es alt="" und das gibt er aus.

            Du sollst es *direkt* aufrufen - nicht per IMG-Element in einem HTML-Dokument, sondern in dem du die Adresse des Scriptes, welches das Bild ausgeben soll, in die Adresszeile deines Browsers eingibst.

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
            1. Du sollst es *direkt* aufrufen - nicht per IMG-Element in einem HTML-Dokument, sondern in dem du die Adresse des Scriptes, welches das Bild ausgeben soll, in die Adresszeile deines Browsers eingibst.

              Selbst dann klappt es ja auch nicht:/

              1. Hi,

                wenn vom Server beim direkten Aufrufen der Picture.php gar nichts zurück kommt würde ich mal die komplette Logik rausnehmen und "Hallo Welt!" rein schreiben.

                Wenn das dann angezeigt wird die Logik wieder rein und nach jeder Zeile eine Kontrollausgabe.

                Dann solltest du zumindest sehen wie weit er kommt.

                Ich kann mir immer noch nicht vorstellen dass da gar kein Fehler kommt.

                ~dave

                1. Ich habe sowas ja schon gemacht..
                  Ich lass das ganze erstmal.
                  Vielleicht sehe ich den Fehler ja morgen, trozdem danke!

  2. Hi,

    Da ich aber nur mir die Rechte gegeben habe

    diesen wichtigen Aspekt solltest du näher erklären: Was heißt "nur mir"? Hast du einen Benutzer-Account auf dem Host? Oder hast du eine Zugriffsbeschränkung mit HTTP-AUTH beim Webserver?

    kann ich das ganze nicht einfach über einen Imagetag in Html machen.

    Mit anderen Worten: Die Bilder sind nicht über HTTP zugänglich.

    $file = 'http://licentious-creativity.de/images/uploads/'.$row->Picture;

    Das ist nicht dein Ernst, oder??
    Weiter oben hast du etwas verschwurbelt erklärt, die Bilder seien über HTTP nicht erreichbar, und das sollte wohl auch so sein, und nun willst du vom Script aus über HTTP zugreifen? Siehst du den Widerspruch?

    $img = imagecreatefromjpeg($file);
        imagejpeg($img);

    Nebenbei: Um nur die Bilddaten durchzureichen, brauchst du nicht die gd-lib zu bemühen, die mit diesen beiden Zeilen das JPEG-Bild erst komplett decodiert (und dabei viel Arbeitsspeicher braucht) und dann neu komprimiert. Ein einfaches

    readfile($file);

    wäre angebrachter. Und natürlich sollte $file dann auch den Dateinamen enthalten, nicht den Namen der entsprechenden HTTP-Ressource.

    So long,
     Martin

    --
    Soso, der Klügere gibt nach.
    Aber warum sollen sich immer nur die Dummen durchsetzen?  .oO(?)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hi,

      $img = imagecreatefromjpeg($file);
          imagejpeg($img);

      Nebenbei: Um nur die Bilddaten durchzureichen, brauchst du nicht die gd-lib zu bemühen, die mit diesen beiden Zeilen das JPEG-Bild erst komplett decodiert (und dabei viel Arbeitsspeicher braucht) und dann neu komprimiert.

      ... und dabei auch noch die Qualität verringert.

      MfG ChrisB

      --
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?