Annotation of embedaddon/php/ext/exif/test.txt, revision 1.1

1.1     ! misho       1: <?php
        !             2: 
        !             3: /* Test script for PHP module ext/exif
        !             4:  *
        !             5:  * (c) Marcus Boerger, 2002
        !             6:  *
        !             7:  * $Id: test.txt 72965 2002-03-12 16:43:29Z helly $
        !             8:  *
        !             9:  * Rename the file to test.php and read the instructions. If the
        !            10:  * script cannot be executed or does not generate any output check
        !            11:  * you error log. In most cases this would mean you found an error
        !            12:  * if the rest of your php environment works fine.
        !            13:  *
        !            14:  * The original version of module exif has many errors and mostly
        !            15:  * fails on executing this script.
        !            16:  */
        !            17: 
        !            18: $file = array_key_exists('thumbnail',$_REQUEST) ? $_REQUEST['thumbnail'] : '';
        !            19: //$file = '/t/temp/kodak-dc4800.tif';
        !            20: //$file = '/t/temp/canon-ixus.jpg';
        !            21: //$file = '/t/temp/test2.jpg';
        !            22: if ( $file) {
        !            23:        $image = exif_thumbnail($file);
        !            24:        if ( $image!==false) {
        !            25:        @Header("content-type: image/jpeg");
        !            26:                echo $image;
        !            27:        } else {
        !            28:                echo "<html><body><table>\n";
        !            29:                echo "Thumbnail could not be extracted.\n";
        !            30:                echo "</table></body></html>";
        !            31:        }
        !            32:        die();
        !            33: }
        !            34: 
        !            35: if ( !defined('IMAGETYPE_GIF'))     define('IMAGETYPE_GIF',1);
        !            36: if ( !defined('IMAGETYPE_JPEG'))    define('IMAGETYPE_JPEG',2);
        !            37: if ( !defined('IMAGETYPE_TIFF_II')) define('IMAGETYPE_TIFF_II',7);
        !            38: if ( !defined('IMAGETYPE_TIFF_MM')) define('IMAGETYPE_TIFF_MM',8);
        !            39: 
        !            40: $possible = array();
        !            41: 
        !            42: /****************************************************************************/
        !            43: // message function is used for debugging purpose: just to se what happens
        !            44: function message($msg) {
        !            45:        error_log($msg,0);
        !            46:        echo "$msg\n";
        !            47: }
        !            48: 
        !            49: function error_msg() {
        !            50:        $ret = '<b style="color:green">O.K.</b>';
        !            51:        if (array_key_exists('php_errormsg',$GLOBALS) && strlen($GLOBALS['php_errormsg'])) {
        !            52:                $ret = '<b style="color:red">'.$GLOBALS['php_errormsg'].'</b>';
        !            53:                $GLOBALS['php_errormsg'] = '';
        !            54:        }
        !            55:        return $ret;
        !            56: }
        !            57: 
        !            58: /****************************************************************************/
        !            59: // private to function search_file()
        !            60: function _search_file($root,&$possible,$path='') {
        !            61:        $sub = array();
        !            62:        $cnt = 0;
        !            63:        $type= false;
        !            64: 
        !            65:        //error_log("search_file($root,$path)",0);
        !            66:        if ($dir = @opendir($root.$path.'/')) {
        !            67:                while (($found = @readdir($dir)) !== false) {
        !            68:                        $type = @filetype($root.$path.'/'.$found);
        !            69:                        //error_log("search_file($root$path):$type=$found",0);
        !            70:                        switch( $type) {
        !            71:                                case 'file':
        !            72:                                        $pos  = strrpos($found,'.');
        !            73:                                        if ( function_exists('exif_imagetype')) {
        !            74:                                                $type = exif_imagetype($root.$path.'/'.$found);
        !            75:                                        } else {
        !            76:                                                if ( $pos!==false) {
        !            77:                                                        $type = GetImageSize($root.$path.'/'.$found);
        !            78:                                                        if ( is_array($type)) {
        !            79:                                                                $type = $type[2];
        !            80:                                                        } else {
        !            81:                                                                $type = false;
        !            82:                                                        }
        !            83:                                                } else $type = false;
        !            84:                                        }
        !            85:                                        if ( $type!==false)
        !            86:                                        {
        !            87:                                                $possible[] = array('file'=>$root.$path.'/'.$found, 'type'=>$type);
        !            88:                                                //error_log("search_file($root$path) add:$path/$found",0);
        !            89:                                                if ( ($cnt=count($possible)) % 100 == 0) {
        !            90:                                                        error_log("exif test page - counting files: $cnt",0);
        !            91:                                                }
        !            92:                                        }
        !            93:                                        break;
        !            94:                                case 'dir':
        !            95:                                        if ( $found!='.' && $found!='..') {
        !            96:                                                $sub[count($sub)] = $found;
        !            97:                                        }
        !            98:                                        break;
        !            99:                        }
        !           100:                }
        !           101:                @closedir($dir);
        !           102:                foreach( $sub as $idx => $found) {
        !           103:                        _search_file($root,$possible,$path.'/'.$found);
        !           104:                }
        !           105:        }
        !           106: }
        !           107: 
        !           108: /****************************************************************************/
        !           109: // function: search_file($file,$ext)
        !           110: //
        !           111: // Searches for $file in document tree. The path is ignored.
        !           112: //
        !           113: function search_file() {
        !           114:        global $argc, $argv;
        !           115:        $possible = array();
        !           116: 
        !           117:        if ( $argc > 1) {
        !           118:                $path = $argv[1];
        !           119:        } else if ( array_key_exists('SCRIPT_FILENAME',$_SERVER)) {
        !           120:                $path = $_SERVER['SCRIPT_FILENAME'];
        !           121:                //error_log("SCRIPT_FILENAME($path)",0);
        !           122:        } else {
        !           123:                $path = $argv[0];
        !           124:                //error_log("argv($path)",0);
        !           125:        }
        !           126:        if ( ($p=strpos($path,'?')) !== false) $path = substr($path,0,$p);
        !           127:        if ( ($p=strrpos($path,'/')) /*< strlen($path)-1*/) $path = substr($path,0,$p);
        !           128:        error_log("exif test page - counting files in $path");
        !           129:        _search_file($path,$possible);
        !           130:        error_log("exif test page - counting files: ".count($possible)." done.",0);
        !           131:        return $possible;
        !           132: }
        !           133: 
        !           134: /****************************************************************************/
        !           135: // function: search_file($file,$ext)
        !           136: //
        !           137: // Searches for $file in document tree. The path is ignored.
        !           138: //
        !           139: function AddInfo($Name,$Value,$highlight=0) {
        !           140:        if (is_array($Value)) $Value = 'Array: ('.join(',',$Value).')';
        !           141:        $Value = nl2br($Value);
        !           142:        if ( $highlight) {
        !           143:                $Name = "<th>$Name</th>";
        !           144:        } else {
        !           145:                $Name = "<td>$Name</td>";
        !           146:        }
        !           147:        return "<tr>$Name<td>$Value&nbsp;</td></tr>\n";
        !           148: }
        !           149: 
        !           150: $possible = search_file();
        !           151: 
        !           152: $title = "PHP module exif test page";
        !           153: 
        !           154: ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional">
        !           155: <html>
        !           156: <head>
        !           157: <title><?=$title ?></title>
        !           158: <style type="text/css">
        !           159: body {
        !           160:        font-size: 12pt;
        !           161: }
        !           162: h1 {
        !           163:        font-size: 20pt;
        !           164:        font-weight:bold;
        !           165: }
        !           166: h2 {
        !           167:        font-size: 16pt;
        !           168:        font-weight:bold;
        !           169: }
        !           170: th {
        !           171:        text-align: left;
        !           172: }
        !           173: ul {
        !           174:        margin-bottom: 6pt;
        !           175: }
        !           176: </style>
        !           177: </head>
        !           178: <body>
        !           179: <h1><?=$title ?></h1>
        !           180: <h2>(c) Marcus B&ouml;rger, 2002</h2>
        !           181: </p>
        !           182: <p>
        !           183: Images taken from <a href="http://www.exif.org">www.exif.org</a>,
        !           184: <a href="http://marcus-boerger.de">marcus-boerger.de</a>
        !           185: all rights reserved by their authors and artists, see exif headers.
        !           186: The files can be downloaded <a href="http://marcus-boerger.de/php/ext/exif/test/">here</a>.
        !           187: To start the test you simple have to put all images into the same directory as this script.
        !           188: The test will work with all files in that directory and all subdirectories. To test private
        !           189: images just put them into that directory.
        !           190: </p>
        !           191: <p>
        !           192: Youmay take a look at the test <a href="http://marcus-boerger.de/php/ext/exif/test.txt">source here</a>.
        !           193: </p>
        !           194: <p>
        !           195: This test just prooves that some exif headers can be scanned.
        !           196: If all files produce a header in output the module might be o.k.
        !           197: </p>
        !           198: <p>
        !           199: What to look for in detail:
        !           200: </p>
        !           201: <ul>
        !           202: <li>kodak-dc4800-plus-acdsee.jpg
        !           203:        <ul>
        !           204:        <li>should provide a <b>long</b> comment 'by marcus b&ouml;rger&lt;%04i&gt;'*n</li>
        !           205:        <li>this file returns an array but it also produces an errormessage because ACDSee destroys
        !           206:            the integrity of IFD directory (size of directory and offsets of entries following any
        !           207:            edited entry maybe wrong).
        !           208:        </li>
        !           209:        </ul>
        !           210: </li>
        !           211: <li>hp-photosmart.jpg
        !           212:        <ul>
        !           213:        <li>should provide a <b>two line</b> copyright notice</li>
        !           214:        </ul>
        !           215: </li>
        !           216: <li>olympus-d320l
        !           217:        <ul>
        !           218:        <li>should provide an <b>APP12</b> infoset</li>
        !           219:        </ul>
        !           220: </li>
        !           221: <li>unknown.jpg
        !           222:        <ul>
        !           223:        <li>should provide an <b>empty</b> comment, this is a comment section and not an IFD0, EXIF or GPS section</li>
        !           224:        </ul>
        !           225: </li>
        !           226: <li>some images
        !           227:        <ul>
        !           228:        <li>have empty fields, that is the tag is present but no data is stored</li>
        !           229:        </ul>
        !           230: </li>
        !           231: </ul>
        !           232: <h2>function exif_tagname</h2>
        !           233: <table border='1' cellspacing='0' cellpadding='3' summary="EXIF headernames">
        !           234: <?php
        !           235: if (function_exists('exif_tagname')) {
        !           236: ?>
        !           237: <tr><td>ImageWidth</td><td><?=@exif_tagname(0x0100)?></td><td><?=error_msg()?></td></tr>
        !           238: <tr><td>JPEGProc</td><td><?=@exif_tagname(0x0200)?></td><td><?=error_msg()?></td></tr>
        !           239: <tr><td>SceneType</td><td><?=@exif_tagname(0xA301)?></td><td><?=error_msg()?></td></tr>
        !           240: <tr><td>false</td><td><?=@exif_tagname(0x0000)===false?'false':'value'?></td><td><?=error_msg()?></td></tr>
        !           241: <?php
        !           242: } else {
        !           243:        echo "<tr><td>function exif_tagname is not supported</td></tr>\n";
        !           244: }
        !           245: ?>
        !           246: </table>
        !           247: <br clear="all">
        !           248: <h2>function exif_read_data for <?=count($possible)?> images</h2>
        !           249: 
        !           250: <?php
        !           251: $check_getimagesize   = false;
        !           252: $check_exif_thumbnail = true;
        !           253: $check_exif_read_data = false;
        !           254: $fast_output = false;
        !           255: if (function_exists('exif_read_data')) {
        !           256:        $num  = 0;
        !           257:        echo "<table border='1' cellspacing='0' cellpadding='3' summary='function results'>\n";
        !           258:        $tab2 = "";//"<table border='1' cellspacing='0' cellpadding='3' summary='EXIF information'>\n";
        !           259:        $types = array('','GIF','JPEG','PNG','SWF','PSD','BMP','TIFF_II','TIFF_MM','JPC','JP2','JPX','JB2');
        !           260:        foreach($possible as $idx => $file) {
        !           261:                $type = $file['type'];
        !           262:                $file = $file['file'];
        !           263:                if ( !((++$num)%100)) error_log("exif test page - checking files: $num",0);
        !           264:                $error = '';
        !           265:                $len   = 2;
        !           266:                $rows  = 1
        !           267:                       + ($check_getimagesize ? 1 : 0)
        !           268:                       + ($check_exif_thumbnail ? 1 : 0)
        !           269:                       + ($check_exif_read_data ? 1 : 0);
        !           270:                if ( !$fast_output) echo "<tr><td rowspan='$rows' valign='top'>$num</td><th colspan='2'>$file</th></tr>\n";
        !           271:                if ($check_getimagesize) {
        !           272:                        $len++;
        !           273:                        $size  = GetImageSize($file);
        !           274:                        $error = error_msg();// clear message
        !           275:                        if ( $size === false) {
        !           276:                                $error = '<b style="color:red">GetImageSize returned false</b><br>'.$error;
        !           277:                            $res_getimagesize = $error;
        !           278:                        } else {
        !           279:                                $res_getimagesize = '('.join($size,',').')';
        !           280:                        }
        !           281:                        if ( !$fast_output) echo AddInfo("GetImageSize",$error,1);
        !           282:                }
        !           283:                if ( $check_exif_thumbnail) {
        !           284:                        $len++;
        !           285:                        if ($type!=IMAGETYPE_JPEG) {// && $type!=IMAGETYPE_TIFF_II && $type!=IMAGETYPE_TIFF_MM) {
        !           286:                                $error = "<b style='color: green'>filetype not supported: $types[$type]</b>";
        !           287:                            $res_exif_thumbnail = $error;
        !           288:                        } else {
        !           289:                                $t_width  = 0;
        !           290:                                $t_height = 0;
        !           291:                                $result = exif_thumbnail($file, $t_width, $t_height);
        !           292:                                $error = error_msg();// clear message
        !           293:                                if ( $result === false) {
        !           294:                                        $error = '<b style="color:red">exif_thumbnail returned false</b><br>'.$error;
        !           295:                                        if ( $t_width && $t_height) {
        !           296:                                                $error = "<b style='color:green'>$t_width x $t_height</b><br>$error";
        !           297:                                        }
        !           298:                                    $res_exif_thumbnail = $error;
        !           299:                                } else {
        !           300:                                        $res_exif_thumbnail = $t_width . " x " . $t_height;
        !           301:                                }
        !           302:                        }
        !           303:                        if ( !$fast_output) echo AddInfo("exif_thumbnail",$error,1);
        !           304:                }
        !           305:                if ($check_exif_read_data) {
        !           306:                        $len++;
        !           307:                        if ($type!=IMAGETYPE_JPEG && $type!=IMAGETYPE_TIFF_II && $type!=IMAGETYPE_TIFF_MM) {
        !           308:                                $res_exif_read_data = "<b style='color: green'>filetype not supported: $types[$type]</b>";
        !           309:                                if ( !$fast_output) echo AddInfo("exif_read_data",$res_exif_read_data);
        !           310:                                $res = '';
        !           311:                        } else {
        !           312:                                $image = exif_read_data($file,'COMMENT,IFD0,EXIF,APP12',true);
        !           313:                                $error = error_msg();// clear message
        !           314:                                if ( !$fast_output) echo AddInfo("exif_read_data",$error,1);
        !           315:                                $res   = '';
        !           316:                                if ( $image === false) {
        !           317:                                    $res_exif_read_data = "<b style='color:red'>exif_read_data returned false</b><br>$error";
        !           318:                                } else {
        !           319:                                        $res_exif_read_data = $error;
        !           320:                                        // ah no!$error = error_msg(); // force o.k.
        !           321:                                        foreach($image as $Name => $Value) {
        !           322:                                                if ( $Name!='Thumbnail') {
        !           323:                                                        if ( is_array($Value)) {
        !           324:                                                                $len++;
        !           325:                                                                $res .= AddInfo($Name,'Array('.count($Value).')');
        !           326:                                                                foreach( $Value as $idx => $Entry) {
        !           327:                                                                        if ($idx==='Thumbnail') $Entry = '&lt;data&gt;';
        !           328:                                                                        $len++;
        !           329:                                                                        $res .= AddInfo($Name.':'.$idx,$Entry);
        !           330:                                                                }
        !           331:                                                        } else {
        !           332:                                                                $len++;
        !           333:                                                                $res .= AddInfo($Name,$Value);
        !           334:                                                        }
        !           335:                                                }
        !           336:                                        }
        !           337:                                }
        !           338:                        }
        !           339:                }
        !           340:                $tab2 .= "<tr><td rowspan='$len' valign='top'>$num</td></tr>\n";
        !           341:                $tab2 .= "<tr><th colspan='2'>$file</th></tr>\n";
        !           342:                if ($check_getimagesize) {
        !           343:                        $tab2 .= "<tr><th>GetImageSize</th><td>$res_getimagesize</td></tr>\n";
        !           344:                }
        !           345:                if ($check_exif_thumbnail) {
        !           346:                        $tab2 .= "<tr><th>exif_thumbnail</th><td>$res_exif_thumbnail</td></tr>\n";
        !           347:                }
        !           348:                if ($check_exif_read_data) {
        !           349:                $tab2 .= "<tr><th>exif_read_data</th><td>$res_exif_read_data</td></tr>\n";
        !           350:                $tab2 .= $res;
        !           351:                }
        !           352:                if ( $fast_output) {
        !           353:                        echo $tab2;
        !           354:                        $tab2 = '';
        !           355:                }
        !           356:        }
        !           357:        error_log("exif test page - checking files: ".count($possible)." done.",0);
        !           358:        echo $tab2;
        !           359:        echo "</table>\n";
        !           360: } else {
        !           361:        echo "<h1 style='color:red'>function exif_read_data is not supported</h1>\n";
        !           362: }
        !           363: ?>
        !           364: </body>
        !           365: </html>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>