$pic_exists = false; $pic_local = false; if (strpos($pic_fullpath, $server_path) !== false || @file_exists($pic_fullpath)) { $pic_local = true; $pic_localpath = str_replace($server_path, '', $pic_fullpath); if (@file_exists($pic_localpath)) { // Mighty Gorgon - Are we sure that this won't cause other issues??? Test please... $pic_fullpath = $pic_localpath; $pic_exists = true; } else { if (@file_exists(array_shift(explode('?', basename($pic_localpath))))) { $pic_exists = true; } } } if (!$pic_exists && any_url_exists($pic_fullpath)) { $pic_exists = true; } if (!$pic_exists) { image_no_thumbnail('thumb_' . $pic_title_reg . '.' . $pic_filetype); exit; } if ($image_processed == false) { $pic_size = get_full_image_info($pic_fullpath, null, $pic_local); if (empty($pic_size)) { image_no_thumbnail('thumb_' . $pic_title_reg . '.' . $pic_filetype); exit; } $pic_width = $pic_size['width']; $pic_height = $pic_size['height']; $pic_filetype = strtolower($pic_size['type']);
/** * mixed get_full_image_info(file $file [, string $out]) * * Returns information about $file. * * If the second argument is supplied, a string representing that information will be returned. * * Valid values for the second argument are IMAGE_WIDTH, 'width', IMAGE_HEIGHT, 'height', IMAGE_TYPE, 'type', * IMAGE_ATTR, 'attr', IMAGE_BITS, 'bits', IMAGE_CHANNELS, 'channels', IMAGE_MIME, and 'mime'. * * If only the first argument is supplied an array containing all the information is returned, * which will look like the following: * * [width] => int (width), * [height] => int (height), * [type] => string (type), * [attr] => string (attributes formatted for IMG tags), * [bits] => int (bits), * [channels] => int (channels), * [mime] => string (mime-type) * * Returns false if $file is not a file, no arguments are supplied, $file is not an image, or otherwise fails. * **/ function get_full_image_info($file = null, $out = null, $local = false) { // If $file is not supplied or is not a file, warn the user and return false. if ($local == true) { if (is_null($file) || !is_file($file)) { //echo '<p><b>Warning:</b> image_info() => first argument must be a file.</p>'; //echo '<br /><br />' . $file . '<br /><br />'; return false; } } else { if (is_null($file) || !any_url_exists($file)) { //echo '<p><b>Warning:</b> image_info() => first argument must be a file.</p>'; //echo '<br /><br />' . $file . '<br /><br />'; return false; } } // Defines the keys we want instead of 0, 1, 2, 3, 'bits', 'channels', and 'mime'. $redefine_keys = array('width', 'height', 'type', 'attr', 'bits', 'channels', 'mime'); // If $out is supplied, but is not a valid key, nullify it. if (!is_null($out) && !in_array($out, $redefine_keys)) { $out = null; } // Assign useful values for the third index. $types = array(1 => 'GIF', 2 => 'JPG', 3 => 'PNG', 4 => 'SWF', 5 => 'PSD', 6 => 'BMP', 7 => 'TIFF(intel byte order)', 8 => 'TIFF(motorola byte order)', 9 => 'JPC', 10 => 'JP2', 11 => 'JPX', 12 => 'JB2', 13 => 'SWC', 14 => 'IFF', 15 => 'WBMP', 16 => 'XBM'); $temp = array(); $data = array(); // Get the image info using getimagesize(). // If $temp fails to populate, warn the user and return false. if (!($temp = @getimagesize($file))) { //echo '<p><b>Warning:</b> image_info() => first argument must be an image.</p>'; return false; } // Get the values returned by getimagesize() $temp = array_values($temp); // Make an array using values from $redefine_keys as keys and values from $temp as values. foreach ($temp as $k => $v) { $data[$redefine_keys[$k]] = $v; } // Make 'type' useful. $data['type'] = $types[$data['type']]; // Return the desired information. return !is_null($out) ? $data[$out] : $data; }