Filetype aus Binärcode auslesen

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

  • Filetype aus Binärcode auslesen

    Hi,

    gibt es eine Mögligkeit aus einem Binärcode den Filetype eines Bildes auszulesen?

    Die Bilder stehn in der DB in einem longblob Feld. Ich weiß ich weiß is blöd. Ist nicht von mir und ist zu viel aufwand das abzuändern.


    jemand ne Idee?
    Lurchi ! Lurchi ! Lurchi !

  • #2
    Du kannst zum Beispiel einen StreamWrapper verwenden und die Binärdaten damit an getimagesize weitergeben. Das wäre die saubere aber recht aufwändige Methode.
    Alternativ kannst du die Funktionalität von getimagesize nachbauen und selbst in die Binärdaten schauen, halte ich aber eher für den unglücklichen Weg.
    Ganz Quick und Dirty könntest du das Bild auch aus der Datenbank in eine temporäre Datei schreiben und anschließend getimagesize drauflos lassen. Könnte mir vorstellen, dass das sogar schneller wie der StreamWrapper ist, bringt aber die ganzen Nachteile des Dateisystems mit, d.h. Berechtigungen, ...

    Btw: "Ich weiß ich weiß is blöd." kann man so pauschal nicht sagen.

    Kommentar


    • #3
      Original geschrieben von PHP-Desaster

      Btw: "Ich weiß ich weiß is blöd." kann man so pauschal nicht sagen.
      Doch, denn der jenige, der die Datei in die DB rein gehauen hat, hätte eigentlich auch den Typ in der DB in einer Spalte schreiben sollen.

      Kommentar


      • #4
        Original geschrieben von asp2php
        Doch, denn der jenige, der die Datei in die DB rein gehauen hat, hätte eigentlich auch den Typ in der DB in einer Spalte schreiben sollen.
        jipp. naja ich versuchs mal mit dem streamwrapper dank schonmal
        Lurchi ! Lurchi ! Lurchi !

        Kommentar


        • #5
          Re: Filetype aus Binärcode auslesen

          Original geschrieben von Anbu
          gibt es eine Mögligkeit aus einem Binärcode den Filetype eines Bildes auszulesen?
          Klar. Es soll Betriebssysteme geben, die machen das nur so.

          Für die drei gängigsten Grafikdateitypen, die im WWW so rumschwirren geht das eins-fix-drei:
          PHP-Code:
          /// detect image file type
          /// return STR filetype | FALSE for unknown filetype
          function get_image_type(
            
          $binary /// binary string (at least the first 6 bytes)
          ) {
            static 
          $types = array (
              
          => 'jpeg',
              
          => 'gif',
              
          => 'png',
            );

            if (!
          preg_match('/\A(\xff\xd8\xff|GIF8|\x89PNG\x0d\x0a)/ms'$binary$hits)) {
              return 
          FALSE;
            }
            return isset(
          $types[strlen($hits[0])]) ? $types[strlen($hits[0])]: FALSE;

          Viel mehr Mühe gibt sich getimagesize() auch nicht[1].

          Ist ungetestet, sollte aber funktionieren, wenn du den Quellcode aus der Zitatansicht kopierst (wegen der sonst fehlenden Backslashes).

          Aus der Datenbank rausholen musst du sie aber selbst.

          P.S.: Ja, mir war gerade langweilig ...

          --
          [1] Um den Dateityp zu rauszubekommen. Für die Ermittlung der Abmessungen tut es sicher noch etwas mehr.
          Zuletzt geändert von fireweasel; 02.04.2009, 13:04.
          Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

          Kommentar


          • #6
            Doch, denn der jenige, der die Datei in die DB rein gehauen hat, hätte eigentlich auch den Typ in der DB in einer Spalte schreiben sollen.
            Klar, das steht außer Frage. Ich meine das Vorgehen, Dateien in die Datenbank zu legen.

            Kommentar


            • #7
              Wenn dir im Endeffekt egal ist was für ein MIME-Type das Bild hatte, kannst du sowas machen:

              PHP-Code:
              $im imagecreatefromstring($binaryData);
              imagejpeg($im); 
              Mein PHP Blog

              Kommentar


              • #8
                Re: Re: Filetype aus Binärcode auslesen

                Original geschrieben von fireweasel
                [B]Klar. Es soll Betriebssysteme geben, die machen das nur so.

                Für die drei gängigsten Grafikdateitypen, die im WWW so..........
                Cool danke probier ich gleich mal aus....
                Lurchi ! Lurchi ! Lurchi !

                Kommentar


                • #9
                  Original geschrieben von ModestLife
                  Wenn dir im Endeffekt egal ist was für ein MIME-Type das Bild hatte, kannst du sowas machen:

                  PHP-Code:
                  $im imagecreatefromstring($binaryData);
                  imagejpeg($im); 
                  der type ist mir eigentlich schon wichtig
                  Lurchi ! Lurchi ! Lurchi !

                  Kommentar

                  Lädt...
                  X