function image_gd_create_tmp in Drupal 7
Create a truecolor image preserving transparency from a provided image.
Parameters
$image: An image object.
$width: The new width of the new image, in pixels.
$height: The new height of the new image, in pixels.
Return value
A GD image handle.
Related topics
3 calls to image_gd_create_tmp()
- image_gd_crop in modules/
system/ image.gd.inc - Crop an image using the GD toolkit.
- image_gd_load in modules/
system/ image.gd.inc - GD helper function to create an image resource from a file.
- image_gd_resize in modules/
system/ image.gd.inc - Scale an image to the specified size using GD.
File
- modules/
system/ image.gd.inc, line 337 - GD2 toolkit for image manipulation within Drupal.
Code
function image_gd_create_tmp(stdClass $image, $width, $height) {
$res = imagecreatetruecolor($width, $height);
if ($image->info['extension'] == 'gif') {
// Find out if a transparent color is set, will return -1 if no
// transparent color has been defined in the image.
$transparent = imagecolortransparent($image->resource);
if ($transparent >= 0) {
// Find out the number of colors in the image palette. It will be 0 for
// truecolor images.
$palette_size = imagecolorstotal($image->resource);
if ($palette_size == 0 || $transparent < $palette_size) {
// Set the transparent color in the new resource, either if it is a
// truecolor image or if the transparent color is part of the palette.
// Since the index of the transparency color is a property of the
// image rather than of the palette, it is possible that an image
// could be created with this index set outside the palette size (see
// http://stackoverflow.com/a/3898007).
$transparent_color = imagecolorsforindex($image->resource, $transparent);
$transparent = imagecolorallocate($res, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']);
// Flood with our new transparent color.
imagefill($res, 0, 0, $transparent);
imagecolortransparent($res, $transparent);
}
else {
imagefill($res, 0, 0, imagecolorallocate($res, 255, 255, 255));
}
}
}
elseif ($image->info['extension'] == 'png') {
imagealphablending($res, FALSE);
$transparency = imagecolorallocatealpha($res, 0, 0, 0, 127);
imagefill($res, 0, 0, $transparency);
imagealphablending($res, TRUE);
imagesavealpha($res, TRUE);
}
else {
imagefill($res, 0, 0, imagecolorallocate($res, 255, 255, 255));
}
return $res;
}