metadata remover

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

  • metadata remover

    Hallo,

    ich bins mal wieder ... habe mir Gedanken über Metadaten und verstecktem Code in Bildern gemacht.

    habe mich nun hingesetzt und arbeite momentan an einer "image metadata remover class" in php -> also damit ist gemeint -> EXIF und andere kommentar Segmente in JPG und bei GIF89a die application extension etc. aus Bildern zu entfernen.

    habe es nun bereits für jpg fertig ...

    jetzt wollte ich fragen ob ihr das für sinnvoll haltet so eine klasse herauszubringen?

    ich für meinen Teil kann nur sagen das ich nach intensivem suchen nichts dergleichen gefunden habe ...

    aber wie es scheint macht die gd lib das jpg bereits schon das sie metadaten entfernt ... daher wollte ich nunmal fragen ob es für gif schon etwas dergleichen gibt?

    also werde daran auf jedenfall weiterentwickeln ... aber ich wollte mich zu erstmal erkundigen was ihr von dieser Idee haltet.

    vielen Dank für eure Antworten!


    greetz subabrain!

  • #2
    Mir jedenfalls würde spontan kein Grund einfallen, so etwas gebrauchen zu können.

    Solltest du es aber aus einer notwendigkeit heraus geschrieben haben, ist es doch offensichtlich, dass es irgendwo benötigt wird

    Kommentar


    • #3
      nunja ... mir geht es halt darum, dass man wie bereits gesagt code einschleusen kann (bei gif besonders) ... also jede plattform welche bilder verwendet würde davon profitieren ... und es gibt auch menschen die nicht wollen, dass private informationen wie -> die art der kamera -> die photoshop version oder sonstiges aus ihren bildern auf allen möglichen seiten herauslesbar ist ^^

      das is mal mein Grund weshalb ich das mache ... aber wie gesagt ich kann mich auch irren und es gibt schon soetwas -> wobei ich nach intensivem suchen wirklich nichts gefunden habe


      greetz subabrain!

      Kommentar


      • #4
        so ... da ich nun bemerkt habe, dass dies nicht nur für Bilder gilt sondern auch andere Formate werde ich die Klasse generell für Dateien anbieten um Metadaten aus Dateien zu entfernen ^^

        also ... werde es dann hier reinschreiben wenn ich das erste release fertig habe ^^


        bis dann - greetz subabrain!

        Kommentar


        • #5
          mach das mal für word- und mit word-generierte dokumente. was da alles reingeschrieben wird! deinw email, von wenn du das dokument per mail erhalten hast usw.

          gruß
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            alles klar - werde es mit einbeziehen!

            bin leider nur n bisl krank ... somit komme ich gerade ned dazu

            werd mich melden wenn ichs fertig habe ..

            gruß
            Robert

            Kommentar


            • #7
              so .. da ich einfach ne null bock phase hab (steht auch auf http://robert-beran.de ) ... hier mal die funktion wie sie noch nicht optimiert nun seit tagen unangerührt rumfährt...

              sie ist nicht perfekt ... aber zumindest kann man schonmal ziemlich viel muell aus jpg bildern herausfiltern:

              EDIT:
              sorry - im ersten post hat er mir die backslashes genommen - jetz muesste es aber stimmen


              PHP-Code:
              //Diese Funktion dient dazu nicht benötigten Code aus JPEG Bildern zu filtern
              function jpg_clean$filename$destination )
              {

                
              //Zuerst handle erstellen um $filename binär auszulesen
                
              $handle fopen ($filename"rb");

                
              //Anschließend immer die Segmente mit der größe auslesen
                
              $segment[] = fread ($handle2);

                
              //Wenn die ersten beiden Bytes nicht 0xFF 0xD8 entsprechen - abbruch!
                
              if($segment[0] === "\\xFF\\xD8")
                {

                   
              //Jetzt schauen ob neues Segment 0xFF entspricht - wenn nicht abbruch
                   
              $segment[] = fread ($handle1);

                   
              //Wenn Segment vorhanden - fahre fort!
                   
              if($segment[1] === "\\xFF")
                   {

                     
              //Dateizeiger an den Anfang setzen
                     
              rewind ($handle);

                     
              //Nun wird die ganze Datei durchsucht
                     
              while( ! feof$handle ) )
                     {

                       
              $daten fread$handle);

                       
              //Prüfe auf spezielle Segmente - falls diese vorhanden sind -> Zeiger neu setzen
                       
              if( (preg_match("/FFE[1-9a-zA-Z]{1,1}/i",bin2hex($daten))) || ($daten === "\\xFF\\xFE") )
                       {

                         
              //Position des Dateizeigers
                         
              $position ftell($handle);

                         
              //Größe des Segments auslesen
                         
              $size fread$handle);

                         
              //Größe ausrechnen
                         
              $newsize 256*hexdec(bin2hex($size{0}))+hexdec(bin2hex($size{1}));

                         
              //Hier nun neue Position bestimmen -> Position hinter dieser Zone
                         
              $newpos $position $newsize;

                         
              //Dateiziger setzen
                         
              fseek ($handle$newpos);

                       }
                       else
                       {

                         
              $newfile[] = $daten;

                       }


                     }

                     
              //Hier File Handle schließen
                     
              fclose ($handle);

                     
              //Wenn Schleife durch ist haben wir newfile als Array
                     
              $newfile implode('',$newfile);

                     
              //Und schreiben dies nun in Angegebenen destination
                     
              $handle fopen($destination"wb");
                     
              fwrite($handle$newfile);
                     
              fclose($handle);


                   }
                   else
                   {

                     return 
              FALSE;

                   }


                }
                else
                {

                  return 
              FALSE;

                }



              $filename ist das zu reinigende jpg bild und $destination das gereinigte neu zu erstellende bild -- der aufruf koennte als wie folgt aussehen:

              PHP-Code:

              jpg_clean
              ('bild.jpg','bild_cleaned.jpg'); 
              wenn ihr meint das die bloße Rückgabe der Werte besser is dann sagts bitte - thx

              falls es hilfreich fuer euch ist - schreibt einfach dann weiss ich ob ich der ganzen sache noch ne chance gebe oder nicht


              gruß
              Robert
              Zuletzt geändert von subabrain; 31.07.2006, 20:12.

              Kommentar

              Lädt...
              X