#269337 by egfrith and wrunt: Added support for more image types (PDF, TIFF, EPS, etc.).
							parent
							
								
									c4a548f64d
								
							
						
					
					
						commit
						18b7e4254b
					
				| 
						 | 
				
			
			@ -101,36 +101,40 @@ function image_toolkit_invoke($method, stdClass $image, array $params = array())
 | 
			
		|||
/**
 | 
			
		||||
 * Get details about an image.
 | 
			
		||||
 *
 | 
			
		||||
 * Drupal only supports GIF, JPG and PNG file formats.
 | 
			
		||||
 * Drupal supports GIF, JPG and PNG file formats when used with the GD
 | 
			
		||||
 * toolkit, and may support others, depending on which toolkits are
 | 
			
		||||
 * installed.
 | 
			
		||||
 *
 | 
			
		||||
 * @param $filepath
 | 
			
		||||
 *   String specifying the path of the image file.
 | 
			
		||||
 * @param $toolkit
 | 
			
		||||
 *   An optional image toolkit name to override the default.
 | 
			
		||||
 * @return
 | 
			
		||||
 *   FALSE, if the file could not be found or is not an image. Otherwise, a
 | 
			
		||||
 *   keyed array containing information about the image:
 | 
			
		||||
 *    'width'     - Width, in pixels.
 | 
			
		||||
 *    'height'    - Height, in pixels.
 | 
			
		||||
 *    'extension' - Commonly used file extension for the image.
 | 
			
		||||
 *    'mime_type' - MIME type ('image/jpeg', 'image/gif', 'image/png').
 | 
			
		||||
 *    'file_size' - File size in bytes.
 | 
			
		||||
 *   - "width": Width, in pixels.
 | 
			
		||||
 *   - "height": Height, in pixels.
 | 
			
		||||
 *   - "extension": Commonly used file extension for the image.
 | 
			
		||||
 *   - "mime_type": MIME type ('image/jpeg', 'image/gif', 'image/png').
 | 
			
		||||
 *   - "file_size": File size in bytes.
 | 
			
		||||
 */
 | 
			
		||||
function image_get_info($filepath) {
 | 
			
		||||
function image_get_info($filepath, $toolkit = FALSE) {
 | 
			
		||||
  $details = FALSE;
 | 
			
		||||
  if (!is_file($filepath)) {
 | 
			
		||||
    return FALSE;
 | 
			
		||||
    return $details;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  $details = FALSE;
 | 
			
		||||
  $data = @getimagesize($filepath);
 | 
			
		||||
  $file_size = @filesize($filepath);
 | 
			
		||||
 | 
			
		||||
  if (isset($data) && is_array($data)) {
 | 
			
		||||
    $extensions = array('1' => 'gif', '2' => 'jpg', '3' => 'png');
 | 
			
		||||
    $extension = array_key_exists($data[2], $extensions) ?  $extensions[$data[2]] : '';
 | 
			
		||||
    $details = array('width'     => $data[0],
 | 
			
		||||
                     'height'    => $data[1],
 | 
			
		||||
                     'extension' => $extension,
 | 
			
		||||
                     'file_size' => $file_size,
 | 
			
		||||
                     'mime_type' => $data['mime']);
 | 
			
		||||
  if (!$toolkit) {
 | 
			
		||||
    $toolkit = image_get_toolkit();
 | 
			
		||||
  }
 | 
			
		||||
  if ($toolkit) {
 | 
			
		||||
    $image = new stdClass();
 | 
			
		||||
    $image->source = $filepath;
 | 
			
		||||
    $image->toolkit = $toolkit;
 | 
			
		||||
    $details = image_toolkit_invoke('get_info', $image);
 | 
			
		||||
    if (isset($details) && is_array($details)) {
 | 
			
		||||
      $details['file_size'] = filesize($filepath);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return $details;
 | 
			
		||||
| 
						 | 
				
			
			@ -343,10 +347,12 @@ function image_load($file, $toolkit = FALSE) {
 | 
			
		|||
  if ($toolkit) {
 | 
			
		||||
    $image = new stdClass();
 | 
			
		||||
    $image->source = $file;
 | 
			
		||||
    $image->info = image_get_info($file);
 | 
			
		||||
    $image->toolkit = $toolkit;
 | 
			
		||||
    if (image_toolkit_invoke('load', $image)) {
 | 
			
		||||
      return $image;
 | 
			
		||||
    $image->info = image_get_info($file, $toolkit);
 | 
			
		||||
    if (isset($image->info) && is_array($image->info)) {
 | 
			
		||||
      $image->toolkit = $toolkit;
 | 
			
		||||
      if (image_toolkit_invoke('load', $image)) {
 | 
			
		||||
        return $image;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return FALSE;
 | 
			
		||||
| 
						 | 
				
			
			@ -374,7 +380,7 @@ function image_save(stdClass $image, $destination = NULL) {
 | 
			
		|||
  if ($return = image_toolkit_invoke('save', $image, array($destination))) {
 | 
			
		||||
    // Clear the cached file size and refresh the image information.
 | 
			
		||||
    clearstatcache();
 | 
			
		||||
    $image->info = image_get_info($destination);
 | 
			
		||||
    $image->info = image_get_info($destination, $image->toolkit);
 | 
			
		||||
 | 
			
		||||
    if (drupal_chmod($destination)) {
 | 
			
		||||
      return $return;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ class ImageToolkitUnitTest extends ImageToolkitTestCase {
 | 
			
		|||
    $image = image_load($this->file, $this->toolkit);
 | 
			
		||||
    $this->assertTrue(is_object($image), t('Returned an object.'));
 | 
			
		||||
    $this->assertEqual($this->toolkit, $image->toolkit, t('Image had toolkit set.'));
 | 
			
		||||
    $this->assertToolkitOperationsCalled(array('load'));
 | 
			
		||||
    $this->assertToolkitOperationsCalled(array('load', 'get_info'));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,8 +58,8 @@ function image_test_get_all_calls() {
 | 
			
		|||
 * Store the values passed to a toolkit call.
 | 
			
		||||
 *
 | 
			
		||||
 * @param $op
 | 
			
		||||
 *   One of the image toolkit operations: 'load', 'save', 'settings', 'resize',
 | 
			
		||||
 *   'rotate', 'crop', 'desaturate'.
 | 
			
		||||
 *   One of the image toolkit operations: 'get_info', 'load', 'save',
 | 
			
		||||
 *   'settings', 'resize', 'rotate', 'crop', 'desaturate'.
 | 
			
		||||
 * @param $args
 | 
			
		||||
 *   Values passed to hook.
 | 
			
		||||
 * @see image_test_get_all_calls()
 | 
			
		||||
| 
						 | 
				
			
			@ -79,6 +79,14 @@ function image_test_settings() {
 | 
			
		|||
  return array();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Image toolkit's get_info operation.
 | 
			
		||||
 */
 | 
			
		||||
function image_test_get_info(stdClass $image) {
 | 
			
		||||
  _image_test_log_call('get_info', array($image));
 | 
			
		||||
  return array();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Image tookit's load operation.
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -320,6 +320,39 @@ function image_gd_create_tmp(stdClass $image, $width, $height) {
 | 
			
		|||
  return $res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get details about an image.
 | 
			
		||||
 *
 | 
			
		||||
 * @param $image
 | 
			
		||||
 *   An image object.
 | 
			
		||||
 * @return
 | 
			
		||||
 *   FALSE, if the file could not be found or is not an image. Otherwise, a
 | 
			
		||||
 *   keyed array containing information about the image:
 | 
			
		||||
 *   - "width": Width, in pixels.
 | 
			
		||||
 *   - "height": Height, in pixels.
 | 
			
		||||
 *   - "extension": Commonly used file extension for the image.
 | 
			
		||||
 *   - "mime_type": MIME type ('image/jpeg', 'image/gif', 'image/png').
 | 
			
		||||
 *
 | 
			
		||||
 * @see image_get_info()
 | 
			
		||||
 */
 | 
			
		||||
function image_gd_get_info(stdClass $image) {
 | 
			
		||||
  $details = FALSE;
 | 
			
		||||
  $data = getimagesize($image->source);
 | 
			
		||||
 | 
			
		||||
  if (isset($data) && is_array($data)) {
 | 
			
		||||
    $extensions = array('1' => 'gif', '2' => 'jpg', '3' => 'png');
 | 
			
		||||
    $extension = array_key_exists($data[2], $extensions) ?  $extensions[$data[2]] : '';
 | 
			
		||||
    $details = array(
 | 
			
		||||
      'width'     => $data[0],
 | 
			
		||||
      'height'    => $data[1],
 | 
			
		||||
      'extension' => $extension,
 | 
			
		||||
      'mime_type' => $data['mime'],
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return $details;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @} End of "ingroup image".
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue