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 </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ö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örger<%04i>'*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 = '<data>';
! 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>