note 68980 deleted from ref.image by tularis

From: Date: Sun, 29 Jun 2008 21:01:12 +0000
Subject: note 68980 deleted from ref.image by tularis
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-140920@lists.php.net to get a copy of this message
Note Submitter: thomas at tgohome dot com ---- I wrote this script to fetch details about a GIF image. I wanted to use it for avatar details on a CMS system, so I wrote it to return an array of details (instead of having to go through all of the functions) Without further ado, here the script is: <? /* * Get GIF image data * Returns an array of data, including GIF image type, and * the width and height of the image, plus transparent colour * details and much more. * * Copyright 2006 Thomas Oldbury. * * This program 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. * * This program 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 this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * */ /* * This function takes one argument, $file, a direct link to the image in * question. Perhaps in future versions it will get the file from an image * resource, but for now, it will have to do. */ function fetch_gif_data($file) { /* * First, we need to get the contents of the file in question, or we print * a warning using trigger_error(). */ $file_data = @file_get_contents($file) or trigger_error("File $file does not exist", E_USER_WARNING); /* * Now we need to fetch the gif image's version. We'll use strpos to fetch * gif89a, gif87a or if we don't get that then we will print an error. */ $image_type = strpos($file_data, "g"); /* * Now we check to see wether it is actually a GIF image, as it may not be * an image and if this is the case, problems could occur. */ if($image_type === false) { trigger_error("File $file is not a gif89a or gif87a compatible image", E_USER_ERROR); } /* * Now, we need to fetch the image type by fetching the text at a certain * position, using PHP's function substr. */ $image_info[version] = substr($file_data, 0, 6); $image_info[file_reg_version] = substr($file_data, 3, 3); /* * Let's get the total number of colours in this image using a special * piece of code, which fetches all the image's colours. */ $im_gif = imagecreatefromgif($file); $image_info[total_pallete_colours] = imagecolorstotal($im_gif); /* * Now, the next thing we need to do is get the width and height of the * image in question by using imagesx(); and imagesy(); */ $image_info[width] = imagesx($im_gif); $image_info[height] = imagesy($im_gif); /* * Let's fetch the transparent color of the image, if there is one. */ $id = imagecolortransparent($im_gif); $image_info[transparent_color_id] = $id; $image_info[transparent_color_values] = imagecolorsforindex($im_gif, $id); /* * Now, we return all the data. */ return $image_info; } /* * Usage Example: */ echo '<pre>'; print_r(fetch_gif_data("hello.gif")); echo '</pre>'; ?> This script returns something like: Array ( [version] => GIF89a [file_reg_version] => 89a [total_pallete_colours] => 251 [width] => 100 [height] => 100 [transparent_color_id] => 16 [transparent_color_values] => Array ( [red] => 0 [green] => 0 [blue] => 0 [alpha] => 127 ) ) Tested on PHP 5.1.2, but should work on older versions.

« previous php.notes (#140920) next »