You are here

function _filefield_generate_image in FileField 6.3

Private function for creating a random image.

This function only works with the GD toolkit. ImageMagick is not supported.

1 call to _filefield_generate_image()
_filefield_generate_file in ./filefield.devel.inc
Generate an image based on the properties of a field.

File

./filefield.devel.inc, line 85
Utility functions for generating FileField content. Note that image generation support requires the GD toolkit.

Code

function _filefield_generate_image($extension = 'png', $min_resolution, $max_resolution) {
  static $images = array();

  // Generate a max of 5 different images.
  if (!isset($images[$extension][$min_resolution][$max_resolution]) || count($images[$extension][$min_resolution][$max_resolution]) < 5) {
    if ($temp_file = tempnam(file_directory_temp(), 'filefield_')) {
      file_move($temp_file, $temp_file . '.' . $extension);
      $min = explode('x', $min_resolution);
      $max = explode('x', $max_resolution);
      $width = rand((int) $min[0], (int) $max[0]);
      $height = rand((int) $min[0], (int) $max[0]);

      // Make a image split into 4 sections with random colors.
      $im = imagecreate($width, $height);
      for ($n = 0; $n < 4; $n++) {
        $color = imagecolorallocate($im, rand(0, 255), rand(0, 255), rand(0, 255));
        $x = $width / 2 * ($n % 2);
        $y = $height / 2 * (int) ($n >= 2);
        imagefilledrectangle($im, $x, $y, $x + $width / 2, $y + $height / 2, $color);
      }

      // Make a perfect circle in the image middle.
      $color = imagecolorallocate($im, rand(0, 255), rand(0, 255), rand(0, 255));
      $smaller_dimension = min($width, $height);
      $smaller_dimension = $smaller_dimension % 2 ? $smaller_dimension : $smaller_dimension;
      imageellipse($im, $width / 2, $height / 2, $smaller_dimension, $smaller_dimension, $color);
      $save_function = 'image' . ($extension == 'jpg' ? 'jpeg' : $extension);
      $save_function($im, $temp_file);
      $images[$extension][$min_resolution][$max_resolution][$temp_file] = $temp_file;
    }
  }
  else {
    $temp_file = array_rand($images[$extension][$min_resolution][$max_resolution]);
  }
  return $temp_file;
}