fid = NULL; $file->uri = $uri; $file->filename = drupal_basename($uri); $file->filemime = file_get_mimetype($file->uri); // @todo Randomize file owner. $file->uid = 1; $file = file_save($file); $images[$extension][$min_resolution][$max_resolution][$file->fid] = $file; } else { return FALSE; } } else { return FALSE; } } else { // Select one of the images we've already generated for this field. $file = new stdClass(); $file->fid = array_rand($images[$extension][$min_resolution][$max_resolution]); } $object_field['fid'] = $file->fid; $object_field['alt'] = devel_create_greeking(4); $object_field['title'] = devel_create_greeking(4); return $object_field; } /** * Private function for creating a random image. * * This function only works with the GD toolkit. ImageMagick is not supported. */ function devel_generate_image($extension = 'png', $min_resolution, $max_resolution) { if ($tmp_file = drupal_tempnam('temporary://', 'imagefield_')) { $destination = $tmp_file . '.' . $extension; file_unmanaged_move($tmp_file, $destination, FILE_CREATE_DIRECTORY); $min = explode('x', $min_resolution); $max = explode('x', $max_resolution); $width = rand((int)$min[0], (int)$max[0]); $height = rand((int)$min[1], (int)$max[1]); // Make an 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, drupal_realpath($destination)); } return $destination; }