summaryrefslogtreecommitdiff
path: root/includes/jpeg_metadata_tk/JFIF.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/jpeg_metadata_tk/JFIF.php')
-rw-r--r--includes/jpeg_metadata_tk/JFIF.php438
1 files changed, 0 insertions, 438 deletions
diff --git a/includes/jpeg_metadata_tk/JFIF.php b/includes/jpeg_metadata_tk/JFIF.php
deleted file mode 100644
index 90f314f..0000000
--- a/includes/jpeg_metadata_tk/JFIF.php
+++ /dev/null
@@ -1,438 +0,0 @@
-<?php
-
-/******************************************************************************
-*
-* Filename: JFIF.php
-*
-* Description: Provides functions for reading and writing information to/from
-* JPEG File Interchange Format (JFIF) segments and
-* JFIF Extension (JFXX) segments within a JPEG file.
-*
-* Author: Evan Hunter
-*
-* Date: 24/7/2004
-*
-* Project: PHP JPEG Metadata Toolkit
-*
-* Revision: 1.11
-*
-* Changes: 1.00 -> 1.11 : changed Interpret_JFXX_to_HTML to allow thumbnail links to work when
-* toolkit is portable across directories
-*
-* URL: http://electronics.ozhiker.com
-*
-* Copyright: Copyright Evan Hunter 2004
-*
-* License: This file is part of the PHP JPEG Metadata Toolkit.
-*
-* The PHP JPEG Metadata Toolkit is free software; you can
-* redistribute it and/or modify it under the terms of the
-* GNU General Public License as published by the Free Software
-* Foundation; either version 2 of the License, or (at your
-* option) any later version.
-*
-* The PHP JPEG Metadata Toolkit is distributed in the hope
-* that it will be useful, but WITHOUT ANY WARRANTY; without
-* even the implied warranty of MERCHANTABILITY or FITNESS
-* FOR A PARTICULAR PURPOSE. See the GNU General Public License
-* for more details.
-*
-* You should have received a copy of the GNU General Public
-* License along with the PHP JPEG Metadata Toolkit; if not,
-* write to the Free Software Foundation, Inc., 59 Temple
-* Place, Suite 330, Boston, MA 02111-1307 USA
-*
-* If you require a different license for commercial or other
-* purposes, please contact the author: evan@ozhiker.com
-*
-******************************************************************************/
-
-include_once 'pjmt_utils.php'; // Change: as of version 1.11 - added to allow directory portability
-
-/******************************************************************************
-*
-* Function: get_JFIF
-*
-* Description: Retrieves information from a JPEG File Interchange Format (JFIF)
-* segment and returns it in an array. Uses information supplied by
-* the get_jpeg_header_data function
-*
-* Parameters: jpeg_header_data - a JPEG header data array in the same format
-* as from get_jpeg_header_data
-*
-* Returns: JFIF_data - an array of JFIF data
-* FALSE - if a JFIF segment could not be found
-*
-******************************************************************************/
-
-function get_JFIF( $jpeg_header_data )
-{
- //Cycle through the header segments
- for( $i = 0; $i < count( $jpeg_header_data ); $i++ )
- {
- // If we find an APP0 header,
- if ( strcmp ( $jpeg_header_data[$i]['SegName'], "APP0" ) == 0 )
- {
- // And if it has the JFIF label,
- if( strncmp ( $jpeg_header_data[$i]['SegData'], "JFIF\x00", 5) == 0 )
- {
- // Found a JPEG File Interchange Format (JFIF) Block
-
- // unpack the JFIF data from the incoming string
- // First is the JFIF label string
- // Then a two byte version number
- // Then a byte, units identifier, ( 0 = aspect ration, 1 = dpi, 2 = dpcm)
- // Then a two byte int X-Axis pixel Density (resolution)
- // Then a two byte int Y-Axis pixel Density (resolution)
- // Then a byte X-Axis JFIF thumbnail size
- // Then a byte Y-Axis JFIF thumbnail size
- // Then the uncompressed RGB JFIF thumbnail data
-
- $JFIF_data = unpack( 'a5JFIF/C2Version/CUnits/nXDensity/nYDensity/CThumbX/CThumbY/a*ThumbData', $jpeg_header_data[$i]['SegData'] );
-
- return $JFIF_data;
- }
- }
- }
- return FALSE;
-}
-
-/******************************************************************************
-* End of Function: get_JFIF
-******************************************************************************/
-
-
-
-
-/******************************************************************************
-*
-* Function: put_JFIF
-*
-* Description: Creates a new JFIF segment from an array of JFIF data in the
-* same format as would be retrieved from get_JFIF, and inserts
-* this segment into the supplied JPEG header array
-*
-* Parameters: jpeg_header_data - a JPEG header data array in the same format
-* as from get_jpeg_header_data, into which the
-* new JFIF segment will be put
-* new_JFIF_array - a JFIF information array in the same format as
-* from get_JFIF, to create the new segment
-*
-* Returns: jpeg_header_data - the JPEG header data array with the new
-* JFIF segment added
-*
-******************************************************************************/
-
-function put_JFIF( $jpeg_header_data, $new_JFIF_array )
-{
- // pack the JFIF data into its proper format for a JPEG file
- $packed_data = pack( 'a5CCCnnCCa*',"JFIF\x00", $new_JFIF_array['Version1'], $new_JFIF_array['Version2'], $new_JFIF_array['Units'], $new_JFIF_array['XDensity'], $new_JFIF_array['YDensity'], $new_JFIF_array['ThumbX'], $new_JFIF_array['ThumbY'], $new_JFIF_array['ThumbData'] );
-
- //Cycle through the header segments
- for( $i = 0; $i < count( $jpeg_header_data ); $i++ )
- {
- // If we find an APP0 header,
- if ( strcmp ( $jpeg_header_data[$i]['SegName'], "APP0" ) == 0 )
- {
- // And if it has the JFIF label,
- if( strncmp ( $jpeg_header_data[$i]['SegData'], "JFIF\x00", 5) == 0 )
- {
- // Found a preexisting JFIF block - Replace it with the new one and return.
- $jpeg_header_data[$i]['SegData'] = $packed_data;
- return $jpeg_header_data;
- }
- }
- }
-
- // No preexisting JFIF block found, insert a new one at the start of the header data.
- array_splice($jpeg_header_data, 0 , 0, array( array( "SegType" => 0xE0,
- "SegName" => "APP0",
- "SegDesc" => $GLOBALS[ "JPEG_Segment_Descriptions" ][ 0xE0 ],
- "SegData" => $packed_data ) ) );
- return $jpeg_header_data;
-}
-
-/******************************************************************************
-* End of Function: put_JFIF
-******************************************************************************/
-
-
-
-
-
-
-
-
-/******************************************************************************
-*
-* Function: Interpret_JFIF_to_HTML
-*
-* Description: Generates html showing the JFIF information contained in
-* a JFIF data array, as retrieved with get_JFIF
-*
-* Parameters: JFIF_array - a JFIF data array, as from get_JFIF
-* filename - the name of the JPEG file being processed ( used
-* by the script which displays the JFIF thumbnail)
-*
-*
-* Returns: output - the HTML string
-*
-******************************************************************************/
-
-function Interpret_JFIF_to_HTML( $JFIF_array, $filename )
-{
- $output = "";
- if ( $JFIF_array !== FALSE )
- {
- $output .= "<H2 class=\"JFIF_Main_Heading\">Contains JPEG File Interchange Format (JFIF) Information</H2>\n";
- $output .= "\n<table class=\"JFIF_Table\" border=1>\n";
- $output .= "<tr class=\"JFIF_Table_Row\"><td class=\"JFIF_Caption_Cell\">JFIF version: </td><td class=\"JFIF_Value_Cell\">". sprintf( "%d.%02d", $JFIF_array['Version1'], $JFIF_array['Version2'] ) . "</td></tr>\n";
- if ( $JFIF_array['Units'] == 0 )
- {
- $output .= "<tr class=\"JFIF_Table_Row\"><td class=\"JFIF_Caption_Cell\">Pixel Aspect Ratio: </td><td class=\"JFIF_Value_Cell\">" . $JFIF_array['XDensity'] ." x " . $JFIF_array['YDensity'] . "</td></tr>\n";
- }
- elseif ( $JFIF_array['Units'] == 1 )
- {
- $output .= "<tr class=\"JFIF_Table_Row\"><td class=\"JFIF_Caption_Cell\">Resolution: </td><td class=\"JFIF_Value_Cell\">" . $JFIF_array['XDensity'] ." x " . $JFIF_array['YDensity'] . " pixels per inch</td></tr>\n";
- }
- elseif ( $JFIF_array['Units'] == 2 )
- {
- $output .= "<tr class=\"JFIF_Table_Row\"><td class=\"JFIF_Caption_Cell\">Resolution: </td><td class=\"JFIF_Value_Cell\">" . $JFIF_array['XDensity'] ." x " . $JFIF_array['YDensity'] . " pixels per cm</td></tr>\n";
- }
-
- $output .= "<tr class=\"JFIF_Table_Row\"><td class=\"JFIF_Caption_Cell\">JFIF (uncompressed) thumbnail: </td><td class=\"JFIF_Value_Cell\">";
- if ( ( $JFIF_array['ThumbX'] != 0 ) && ( $JFIF_array['ThumbY'] != 0 ) )
- {
- $output .= $JFIF_array['ThumbX'] ." x " . $JFIF_array['ThumbY'] . " pixels, Thumbnail Display Not Yet Implemented</td></tr>\n";
- // TODO Implement JFIF Thumbnail display
- }
- else
- {
- $output .= "None</td></tr>\n";
- }
-
- $output .= "</table><br>\n";
- }
-
- return $output;
-
-}
-
-
-/******************************************************************************
-* End of Function: Interpret_JFIF_to_HTML
-******************************************************************************/
-
-
-
-
-
-
-
-
-
-
-/******************************************************************************
-*
-* Function: get_JFXX
-*
-* Description: Retrieves information from a JPEG File Interchange Format Extension (JFXX)
-* segment and returns it in an array. Uses information supplied by
-* the get_jpeg_header_data function
-*
-* Parameters: jpeg_header_data - a JPEG header data array in the same format
-* as from get_jpeg_header_data
-*
-* Returns: JFXX_data - an array of JFXX data
-* FALSE - if a JFXX segment could not be found
-*
-******************************************************************************/
-
-function get_JFXX( $jpeg_header_data )
-{
- //Cycle through the header segments
- for( $i = 0; $i < count( $jpeg_header_data ); $i++ )
- {
- // If we find an APP0 header,
- if ( strcmp ( $jpeg_header_data[$i]['SegName'], "APP0" ) == 0 )
- {
- // And if it has the JFIF label,
- if( strncmp ( $jpeg_header_data[$i]['SegData'], "JFXX\x00", 5) == 0 )
- {
- // Found a JPEG File Interchange Format Extension (JFXX) Block
-
- // unpack the JFXX data from the incoming string
- // First is the 5 byte JFXX label string
- // Then a 1 byte Extension code, indicating Thumbnail Format
- // Then the thumbnail data
-
- $JFXX_data = unpack( 'a5JFXX/CExtension_Code/a*ThumbData', $jpeg_header_data[$i]['SegData'] );
- return $JFXX_data;
- }
- }
- }
- return FALSE;
-}
-
-/******************************************************************************
-* End of Function: get_JFXX
-******************************************************************************/
-
-
-
-
-/******************************************************************************
-*
-* Function: put_JFXX
-*
-* Description: Creates a new JFXX segment from an array of JFXX data in the
-* same format as would be retrieved from get_JFXX, and inserts
-* this segment into the supplied JPEG header array
-*
-* Parameters: jpeg_header_data - a JPEG header data array in the same format
-* as from get_jpeg_header_data, into which the
-* new JFXX segment will be put
-* new_JFXX_array - a JFXX information array in the same format as
-* from get_JFXX, to create the new segment
-*
-* Returns: jpeg_header_data - the JPEG header data array with the new
-* JFXX segment added
-*
-******************************************************************************/
-
-function put_JFXX( $jpeg_header_data, $new_JFXX_array )
-{
- // pack the JFXX data into its proper format for a JPEG file
- $packed_data = pack( 'a5Ca*',"JFXX\x00", $new_JFXX_array['Extension_Code'], $new_JFXX_array['ThumbData'] );
-
- $JFIF_pos = -1;
-
- //Cycle through the header segments
- for( $i = 0; $i < count( $jpeg_header_data ); $i++ )
- {
- // If we find an APP0 header,
- if ( strcmp ( $jpeg_header_data[$i]['SegName'], "APP0" ) == 0 )
- {
- // And if it has the JFXX label,
- if( strncmp ( $jpeg_header_data[$i]['SegData'], "JFXX\x00", 5) == 0 )
- {
- // Found a preexisting JFXX block - Replace it with the new one and return.
- $jpeg_header_data[$i]['SegData'] = $packed_data;
- return $jpeg_header_data;
- }
-
- // if it has the JFIF label,
- if( strncmp ( $jpeg_header_data[$i][SegData], "JFIF\x00", 5) == 0 )
- {
- // Found a preexisting JFIF block - Mark it in case we need to insert the JFXX after it
- $JFIF_pos = $i;
- }
- }
- }
-
-
- // No preexisting JFXX block found
-
- // Check if a JFIF segment was found,
- if ( $JFIF_pos !== -1 )
- {
- // A pre-existing JFIF segment was found,
- // insert the new JFXX segment after it.
- array_splice($jpeg_header_data, $JFIF_pos +1 , 0, array ( array( "SegType" => 0xE0,
- "SegName" => "APP0",
- "SegDesc" => $GLOBALS[ "JPEG_Segment_Descriptions" ][ 0xE0 ],
- "SegData" => $packed_data ) ) );
-
- }
- else
- {
- // No pre-existing JFIF segment was found,
- // insert a new JFIF and the new JFXX segment at the start of the array.
-
- // Insert new JFXX segment
- array_splice($jpeg_header_data, 0 , 0, array( array( "SegType" => 0xE0,
- "SegName" => "APP0",
- "SegDesc" => $GLOBALS[ "JPEG_Segment_Descriptions" ][ 0xE0 ],
- "SegData" => $packed_data ) ) );
-
- // Create a new JFIF to be inserted at the start of
- // the array, with generic values
- $packed_data = pack( 'a5CCCnnCCa*',"JFIF\x00", 1, 2, 1, 72, 72, 0, 0, "" );
-
- array_splice($jpeg_header_data, 0 , 0, array( array( "SegType" => 0xE0,
- "SegName" => "APP0",
- "SegDesc" => $GLOBALS[ "JPEG_Segment_Descriptions" ][ 0xE0 ],
- "SegData" => $packed_data ) ) );
- }
-
-
- return $jpeg_header_data;
-}
-
-/******************************************************************************
-* End of Function: put_JFIF
-******************************************************************************/
-
-
-
-/******************************************************************************
-*
-* Function: Interpret_JFXX_to_HTML
-*
-* Description: Generates html showing the JFXX thumbnail contained in
-* a JFXX data array, as retrieved with get_JFXX
-*
-* Parameters: JFXX_array - a JFXX information array in the same format as
-* from get_JFXX, to create the new segment
-* filename - the name of the JPEG file being processed ( used
-* by the script which displays the JFXX thumbnail)
-*
-* Returns: output - the Html string
-*
-******************************************************************************/
-
-function Interpret_JFXX_to_HTML( $JFXX_array, $filename )
-{
- $output = "";
- if ( $JFXX_array !== FALSE )
- {
- $output .= "<H2 class=\"JFXX_Main_Heading\">Contains JPEG File Interchange Extension Format (JFXX) Thumbnail</H2>\n";
- switch ( $JFXX_array['Extension_Code'] )
- {
- case 0x10 : $output .= "<p class=\"JFXX_Text\">JFXX Thumbnail is JPEG Encoded</p>\n";
-
- // Change: as of version 1.11 - Changed to make thumbnail link portable across directories
- // Build the path of the thumbnail script and its filename parameter to put in a url
- $link_str = get_relative_path( dirname(__FILE__) . "/get_JFXX_thumb.php" , getcwd ( ) );
- $link_str .= "?filename=";
- $link_str .= get_relative_path( $filename, dirname(__FILE__) );
-
- // Add thumbnail link to html
- $output .= "<a class=\"JFXX_Thumbnail_Link\" href=\"$link_str\"><img class=\"JFXX_Thumbnail\" src=\"$link_str\"></a>\n";
- break;
- case 0x11 : $output .= "<p class=\"JFXX_Text\">JFXX Thumbnail is Encoded 1 byte/pixel</p>\n";
- $output .= "<p class=\"JFXX_Text\">Thumbnail Display Not Implemented Yet</p>\n";
- break;
- case 0x13 : $output .= "<p class=\"JFXX_Text\">JFXX Thumbnail is Encoded 3 bytes/pixel</p>\n";
- $output .= "<p class=\"JFXX_Text\">Thumbnail Display Not Implemented Yet</p>\n";
- break;
- default : $output .= "<p class=\"JFXX_Text\">JFXX Thumbnail is Encoded with Unknown format</p>\n";
- break;
-
- // TODO: Implement JFXX one and three bytes per pixel thumbnail decoding
- }
-
- }
-
- return $output;
-
-}
-
-/******************************************************************************
-* End of Function: Interpret_JFXX_to_HTML
-******************************************************************************/
-
-
-
-
-?> \ No newline at end of file