note 68664 added to ref.image
| From: | webmaster at robert-beran dot de | Date: | Sat, 05 Aug 2006 23:49:04 +0000 |
| Subject: | note 68664 added to ref.image | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-115576@lists.php.net to get a copy of this message | ||
Here my function to remove JPEG Metadata (german comments):
<?php
//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 ($handle, 2);
//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 ($handle, 1);
//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, 2 );
//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, 2 );
//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;
}
}
?>
The function will read the JPG file ($filename) and will copy the cleaned JPG file to
($destination).
It might be more helpful to make a function which checks all the segments - thats more secure i
think ;)
But its good to get rid off script code infiltration and stuff like that in jpg images.
if there are any questions - ask me - thx!
greetz
robert
----
Server IP: 66.163.161.117
Probable Submitter: 84.164.64.23
----
X-Spam-Status: No, hits=3.1 required=5.0 tests=DATE_MISSING,FROM_NO_LOWER
autolearn=no version=2.64
----
Manual Page -- http://www.php.net/manual/en/ref.image.php
Edit -- https://master.php.net/note/edit/68664
Del: integrated -- https://master.php.net/note/delete/68664/integrated
Del: useless -- https://master.php.net/note/delete/68664/useless
Del: bad code -- https://master.php.net/note/delete/68664/bad+code
Del: spam -- https://master.php.net/note/delete/68664/spam
Del: non-english -- https://master.php.net/note/delete/68664/non-english
Del: in docs -- https://master.php.net/note/delete/68664/in+docs
Del: other reasons-- https://master.php.net/note/delete/68664
Reject -- https://master.php.net/note/reject/68664
Search -- https://master.php.net/manage/user-notes.php