Ausgabe im Browser imagepng()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ausgabe im Browser imagepng()

    Bei folgendem Problem geht es nicht darum, ob das Script in Ordnung ist oder nicht.
    Das hier habe ich aus einem Buch (die Datei war auf der CD).
    PHP-Code:
      $im imagecreate(150,100);
      
    $grau imagecolorallocate($im192192192);
      
    imagefill ($im00$grau);

      
    header("Content-Type: image/jpeg");
      
    imagejpeg($im);

      
    imagedestroy($im); 
    Wenn ich die Datei unter localhost im Firefox aufrufe funkt es. Und jetzt kommt's:
    Anfangs dachte ich, dass ich mich irgendwo vertippt habe und habe deshalb den Code von der Originalseite aus dem Buch in meine Seite kopiert und im Browser aufgerufen. Und es kommt:
    "Die Grafik "http://localhost/php/.." kann nicht angezeigt werden, weil sie Fehler enthält"
    Habe es mit utf-8 mit und ohne Bom bei abspeichern probiert, aber es ändert sich nichts.

    Vereinfacht: Obwohl beide Dateien den selben Inhalt haben, funktioniert eine (uebung.php) aber die andere (pic.php) nicht

    Wen es interessiert ich habe die beiden inhaltlich identischen Dateien im Anhang hochgeladen. Mich würde interessieren, ob das nur bei mir so ist und wenn ja warum.. Auf Php.net habe ich in die Richtung zwar schon einiges gefunden, aber die Ratschläge z.B. nicht als utf-8 speichern usw. haben nichts gebracht.
    In der Php-Logfile steht.

    Warning: header() expects parameter 1 to be string
    Aber warum geht es dann bei der einen Datei und bei der anderen nicht?

    [FONT=&quot][/FONT]
    Angehängte Dateien

  • #2
    es gibt einen unterschied zwischen deinen beiden dateien.
    die eine datei (pic.php) ist um 3byte größer als die andere.

    wenn ich den inhalt der pic.php in eine neue datei kopiere ändert sich auch die größe und es funktioniert wieder.

    und zwar ist da ein unterschied am anfang der datei.
    vi sagt das die pic.php im dos format ist und ich denke genau da liegt dein problem ;-)
    Gruß
    Uzu

    private Homepage

    Kommentar


    • #3
      Hallo Uzu,

      Ja stimmt, der Größenunterschied ist mir dann auch noch aufgefallen, aber konnte nicht herausfinden warum.
      Mit welchem Editor hast du dann die Datei wieder abgespeichert?
      Ich war gestern schon verzweifelt, nachdem ich es mit Notepad++, Windows Texteditor, und sublime probiert hatte, aber sich nichts änderte.

      Dann frage ich mich warum das nur bei der Ausgabe von Bilddateien so heikel ist. was mir auch aufgefallen ist: Bei einem anderen Beispiel wurde das Bild auch als fehlerhaft ausgegeben als ich die Leerzeile nach <?php entfernte ging's auf einmal.

      Sowas kann ich nicht einfach gut sein lassen, auch wenn etliche Stunden dabei draufgehen. :-)
      Hätte gerne eine logische Erklärung, sonst wird das Programmieren mit GD zum Lotteriespiel...

      Gruß,
      MnasT

      Kommentar


      • #4
        ich nutze aptana studio als IDE und selbst mit notepad (dem von windows) gehts ohne probleme.
        solange du keine sonderzeichen in deinem quellcode hast kannst du auch ruhig alles in ansi abspeichern, sonst eben utf8.
        Gruß
        Uzu

        private Homepage

        Kommentar


        • #5
          Zitat von MnasT Beitrag anzeigen
          Dann frage ich mich warum das nur bei der Ausgabe von Bilddateien so heikel ist.
          Wenn Du die pic.php ungeparst im Browser aufrufst und im Browser bei Ansicht Windows-1252 wählst, dann ist der Fehler richtig gut zu sehen.

          PHP-Code:
          <?php
          Es ist dieser (oder dieses, ich sag immer der) BOM und der würde auch beim Start von Session und bei Weiterleitungen zu Fehlern führen und zwar überall dort, wo vorher keine Ausgabe von Zeichen (auch keinen Leerzeichen) erfolgen darf.

          Byte Order Mark ? Wikipedia

          Edit: Im FF aufrufen, habe ich vergessen zu erwähnen, im IE geht es nicht und mit dem Chrome weiß ich nicht, wie die Zeichenkodierung wechseln.
          Zuletzt geändert von Melewo; 08.05.2013, 16:10.

          Kommentar


          • #6
            Hi Melewo,
            Verstehe..
            Ich verwende ohnehin nur FF. Die Ansicht läßt sich aber, wenn ich eine php-Seite unter localhost offen habe, nicht ändern.
            Siehe Screenshot im Anhang.
            Also Zusammenfassend: Keine Leerzeichen vor <?php und header()
            und nur mit utf-8 ohne BOM..
            korrekt?
            Angehängte Dateien

            Kommentar


            • #7
              Zitat von Melewo Beitrag anzeigen
              Wenn Du die pic.php ungeparst im Browser aufrufst und im Browser bei Ansicht Windows-1252 wählst, dann ist der Fehler richtig gut zu sehen.
              Zitat von MnasT Beitrag anzeigen
              Die Ansicht läßt sich aber, wenn ich eine php-Seite unter localhost offen habe, nicht ändern.
              Wenn Du die pic.php ungeparst im Browser aufrufst, also nicht über "http://localhost/pic.php" sondern über "C:/xampp/htdocs/pic.php", dann lässt sich die Ansicht ändern.

              Edit: Bei der aus dem Zip-Archiv, bei der anderen, bei der die Auslieferung richtig klappt, nicht. Bei der kannst Du dann auch die Zeichenkodierung nicht mehr ändern, wenn die sich über Localhost aufrufen lässt, denn die ist ja dann ein Bild-JPG und wird mit einem Image-Header ausgeliefert.
              Zuletzt geändert von Melewo; 08.05.2013, 20:18.

              Kommentar


              • #8
                ja habe den fehler jetzt gesehen.
                damit, dass vor dem <?php kein leerzeichen sein darf hast du vollkommen recht.
                was natürlich ein problem ist, wenn man das bild z.b irgendwo im html-bereich ausgeben möchte, dann muss man die datei, die das bild erzeugt auslagern
                <img src="image.php" alt="" />

                Kommentar


                • #9
                  Zitat von UzumakiNaruto Beitrag anzeigen
                  ich nutze aptana studio als IDE und selbst mit notepad (dem von windows) gehts ohne probleme.
                  solange du keine sonderzeichen in deinem quellcode hast kannst du auch ruhig alles in ansi abspeichern, sonst eben utf8.
                  optisch gefällt mir aptana schon sehr gut, auch die große auswahl an themes ist cool, aber da ich noch anfänger bin, war mir aptana zu schwer zum konfigurieren.

                  nach langem hin uns her, bin ich mal vorläufig bei scriptly geblieben. ich finde die vorschaufunktion super. man kann den browser vom hauptfenster lösen und er bleibt immer offen. (siehe screenshot)

                  gruß
                  StanM
                  Angehängte Dateien

                  Kommentar


                  • #10
                    Passt zwar nicht zum Thema, aber wenn du Anfänger bist, solltest du es nicht falsch lernen, sondern gleich richtig.

                    "var" stammt noch von PHP 4 und ist heute nicht mehr zu verwenden. Nimm stattdessen private, protected oder public. Das selbe gilt für Funktionen. Immer als private, protected oder public deklarieren. Wenn nichts davor steht, ist es zwar automatisch public, aber wegen der Lesbarkeit sollte man es trotzdem hinschreiben.

                    Kommentar


                    • #11
                      und benutze lieber den firefox da du den mit einigen plugins aufbohren kannst und du hast super tools zur hand wenn mal irgendwo dein html/css/js nicht das macht was es sollte.

                      firebug
                      live http headers
                      html validator
                      web developer

                      unter win xp habe ich gerne webcraft benutzt, war schlank, fix und ganz nice .. leider kein autocomplete.
                      wird aber schon lange nicht mehr weiter entwickelt und dadurch gibts bei win7 eher probleme.

                      soviel gibts bei aptana gar nicht einzustellen.

                      ein workspace einrichten, seine projekte rein und schon kann es losgehen.
                      evtl das syntax highlighting den eigenen wünschen anpassen.

                      mehr braucht man zuhause nicht, als richtiger entwickler brauchst du natürlich viel mehr funktionen ;-)
                      Gruß
                      Uzu

                      private Homepage

                      Kommentar


                      • #12
                        Zitat von h3ll Beitrag anzeigen
                        "var" stammt noch von PHP 4 und ist heute nicht mehr zu verwenden. Nimm stattdessen private, protected oder public. Das selbe gilt für Funktionen. Immer als private, protected oder public deklarieren. Wenn nichts davor steht, ist es zwar automatisch public, aber wegen der Lesbarkeit sollte man es trotzdem hinschreiben.
                        Thanks..
                        Habe unlängst einen Php-Crashkurs gemacht - da hatten wir das eh mit public, private und protected gelernt. Das Beispiel auf dem Screenshot hatte ich gerade zufällig offen - und das war aus einem uralten Buch. nur die Eigenschaft ohne entweder 'var' oder public etc. funktioniert eh nicht

                        Gruß,
                        MnasT

                        Kommentar


                        • #13
                          Zitat von UzumakiNaruto Beitrag anzeigen
                          und benutze lieber den firefox da du den mit einigen plugins aufbohren kannst und du hast super tools zur hand wenn mal irgendwo dein html/css/js nicht das macht was es sollte.

                          firebug
                          live http headers
                          html validator
                          web developer

                          soviel gibts bei aptana gar nicht einzustellen.
                          Hi Uzu,

                          Nutze normal eh nur Firefox, aber bei Scriptly funktioniert FF nicht als interner Browser, deshalb Ie.

                          live http headers habe ich mir gerade installiert - cool
                          die anderen hatte ich schon.

                          @soviel gibts bei aptana gar nicht einzustellen.
                          naja :-) wie mans nimmt.

                          Kommentar

                          Lädt...
                          X