http://www.mediawiki.org/wiki/Special:Code/MediaWiki/72279

Revision: 72279
Author:   daniel
Date:     2010-09-03 12:06:47 +0000 (Fri, 03 Sep 2010)

Log Message:
-----------
photoshop quirks: ignore extra tiff directory causing the same data to show as 
two pages in the tiff

Modified Paths:
--------------
    trunk/extensions/PagedTiffHandler/PagedTiffHandler.image.php
    trunk/extensions/PagedTiffHandler/PagedTiffHandler.php

Modified: trunk/extensions/PagedTiffHandler/PagedTiffHandler.image.php
===================================================================
--- trunk/extensions/PagedTiffHandler/PagedTiffHandler.image.php        
2010-09-03 11:59:06 UTC (rev 72278)
+++ trunk/extensions/PagedTiffHandler/PagedTiffHandler.image.php        
2010-09-03 12:06:47 UTC (rev 72279)
@@ -225,6 +225,7 @@
                $entry = array();
 
                $prevPage = 0;
+               $quirks = false;
 
                foreach ( $rows as $row ) {
                        $row = trim( $row );
@@ -282,17 +283,37 @@
                                        $entry['width'] = (int)$value;
                                } else if ( $key == 'Image Length' || $key == 
'PixelYDimension' ) {
                                        $entry['height'] = (int)$value;
+                               } else if ( $key == 'Software' && 
preg_match('/photoshop/i', $value) ) {
+                                       $quirks = "photoshop";
+                               } else if ( $key == 'Subfile Type' ) {
+                                       $entry['type'] = (int)$value;
                                }
                        } else {
                                // strange line
                        }
-
                }
 
                if ( $entry ) {
                        $ok = $this->addPageEntry($entry, $data, $prevPage);
                }
 
+               if ( $quirks === 'photoshop' && count( $data['page_data'] ) > 1 
) {
+                       # Photoshop may use multiple directories for a single 
page image
+                       # Ignore the ones with SubfileType == 0
+                       foreach ( $data['page_data'] as $i => $entry ) {
+                               if ( isset($entry['type']) && $entry['type'] 
=== 0 ) {
+                                       unset( $data['page_data'][$i] );
+                                       $data['warnings'][] = "removed spurious 
frame (photoshop quirk)";
+                               }
+                       }
+
+                       $data['page_data'] = array_values( $data['page_data'] 
); # re-index
+                       array_unshift( $data['page_data'], null ); # make 
1-indexed
+                       unset( $data['page_data'][0] ); #remove dummy
+               }
+
+               $data['quirks'] = $quirks;
+
                if ( !isset( $data['page_amount'] ) ) {
                        $data['page_amount'] = count( $data['page_data'] );
                }

Modified: trunk/extensions/PagedTiffHandler/PagedTiffHandler.php
===================================================================
--- trunk/extensions/PagedTiffHandler/PagedTiffHandler.php      2010-09-03 
11:59:06 UTC (rev 72278)
+++ trunk/extensions/PagedTiffHandler/PagedTiffHandler.php      2010-09-03 
12:06:47 UTC (rev 72279)
@@ -123,9 +123,10 @@
 $wgMediaHandlers['image/tiff'] = 'PagedTiffHandler';
 $wgHooks['LanguageGetMagic'][] = 'PagedTiffHandler::addTiffLossyMagicWordLang';
 
-define('TIFF_METADATA_VERSION', '1.1');
+define('TIFF_METADATA_VERSION', '1.2');
 # 1.0: initial
 # 1.1: fixed bugs in imageinfo parser
+# 1.2: photoshop quirks for imageinfo parser
 
 //$wgHooks['PagedTiffHandlerRenderCommand'][] = 
'PagedTiffHandler::renderCommand';
 //$wgHooks['PagedTiffHandlerTiffData'][] = 'PagedTiffImage::tiffData';



_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to