Remove EXIF data from JPG using PHP

前端 未结 8 769
遥遥无期
遥遥无期 2020-11-27 18:53

Is there any way to remove the EXIF data from a JPG using PHP? I have heard of PEL, but I\'m hoping there\'s a simpler way. I am uploading images that will be displayed onli

8条回答
  •  爱一瞬间的悲伤
    2020-11-27 19:33

    function remove_exif($in, $out)
    {
        $buffer_len = 4096;
        $fd_in = fopen($in, 'rb');
        $fd_out = fopen($out, 'wb');
        while (($buffer = fread($fd_in, $buffer_len)))
        {
            //  \xFF\xE1\xHH\xLLExif\x00\x00 - Exif 
            //  \xFF\xE1\xHH\xLLhttp://      - XMP
            //  \xFF\xE2\xHH\xLLICC_PROFILE  - ICC
            //  \xFF\xED\xHH\xLLPhotoshop    - PH
            while (preg_match('/\xFF[\xE1\xE2\xED\xEE](.)(.)(exif|photoshop|http:|icc_profile|adobe)/si', $buffer, $match, PREG_OFFSET_CAPTURE))
            {
                echo "found: '{$match[3][0]}' marker\n";
                $len = ord($match[1][0]) * 256 + ord($match[2][0]);
                echo "length: {$len} bytes\n";
                echo "write: {$match[0][1]} bytes to output file\n";
                fwrite($fd_out, substr($buffer, 0, $match[0][1]));
                $filepos = $match[0][1] + 2 + $len - strlen($buffer);
                fseek($fd_in, $filepos, SEEK_CUR);
                echo "seek to: ".ftell($fd_in)."\n";
                $buffer = fread($fd_in, $buffer_len);
            }
            echo "write: ".strlen($buffer)." bytes to output file\n";
            fwrite($fd_out, $buffer, strlen($buffer));
        }
        fclose($fd_out);
        fclose($fd_in);
    }
    

    It is a prototype for a call from a command line.

提交回复
热议问题