function _image_generate_image in Image 6
Private function for creating a random image.
This function only works with the GD toolkit. ImageMagick is not supported.
Based on _filefield_generate_image().
1 call to _image_generate_image()
- image_generate_nodeapi in contrib/
image_generate/ image_generate.module - Implementation of hook_nodeapi().
File
- contrib/
image_generate/ image_generate.module, line 74 - image_generate.module
Code
function _image_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_')) {
dsm($temp_file);
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;
}