A voir également:         
- Script php
- Script vidéo youtube - Guide
- Easy php - Télécharger - Divers Web & Internet
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
- Expert php pinterest - Télécharger - Langages
2 réponses
                        
                    Tu veux un café et des biscuits aussi ? Si tu expliquais en détail et plus poliment que ça, ça aiderait
                
                
    
                
                        
                    Re-Bonjour 
s'il vous plait je veut crée un script php qui permet d'écrire un texte sur les images de mon site web comme par exemple "bonjour membre"
    
                s'il vous plait je veut crée un script php qui permet d'écrire un texte sur les images de mon site web comme par exemple "bonjour membre"
    j'ai trouver ce script mais j'arrive pas à le tourner 
<?php
/**
* thumbs_builder
*
* @author Thomas RAMBAUD
* @copyright 2008
* @version 1.0
* @access public
*/
class thumbs_builder
{
protected $_source, $_thumbs_quality, $_save_directory, $_border, $_text, $_icon,
$_current_thumb, $_allowed_position;
public function __construct($source_src, $save_directory, $thumbs_quality = 100)
{
$this->set_source_src($source_src);
$this->set_save_directory($save_directory);
$this->set_thumbs_quality($thumbs_quality);
$this->_allowed_position = array('top', 'bottom', 'left', 'right', 'center');
}
public function get_source_path()
{
return $this->_source['src'];
}
public function get_source_width()
{
return $this->_source['sizes'][0];
}
public function get_source_height()
{
return $this->_source['sizes'][1];
}
public function get_save_directory()
{
return $this->_save_directory;
}
public function get_current_thumb()
{
return $this->_current_thumb['img'];
}
public function get_current_thumb_width()
{
return $this->_current_thumb['sizes'][0];
}
public function get_current_thumb_height()
{
return $this->_current_thumb['sizes'][1];
}
public static function get_random_string($chars_count = 4)
{
$caracteres = "123AaBbCcDdEe456fGgHhIiJjKkLlMmNn789PQqRrSsTtUuVvWwXxYyZz0";
$chaine = '';
srand(time());
for ($i = 0; $i < $chars_count; $i++)
$chaine .= substr($caracteres, rand() % (strlen($caracteres)), 1);
return $chaine;
}
public static function get_image_extension($fn_or_path)
{
return strtolower(substr($fn_or_path, strrpos($fn_or_path, '.') + 1));
}
public static function get_rgb_from_hexa($hex)
{
if ($hex[0] == '#')
$hex = substr($hex, 1);
$nb_cars = strlen($hex);
if ($nb_cars == 6)
list($r, $g, $b) = array($hex[0] . $hex[1], $hex[2] . $hex[3], $hex[4] . $hex[5]);
elseif ($nb_cars == 3)
list($r, $g, $b) = array($hex[0] . $hex[0], $hex[1] . $hex[1], $hex[2] . $hex[2]);
else
return false;
$r = hexdec($r);
$g = hexdec($g);
$b = hexdec($b);
return array($r, $g, $b);
}
public function set_source_src($source_src)
{
if (file_exists($source_src)) {
$this->_source['src'] = $source_src;
$this->_source['sizes'] = getimagesize($source_src);
$this->_source['img'] = $this->build_image_from_path($source_src, $this->_source['sizes'][2]);
return true;
} else {
return false;
}
}
public function set_save_directory($save_directory)
{
if (is_dir($save_directory)){
$this->_save_directory = $save_directory;
return true;
}
else{
return false;
}
}
public function set_thumbs_quality($quality)
{
$this->_thumbs_quality = ($quality >= 0 && $quality <= 100) ? $quality : 100;
}
public function set_icon($icon_src, $position_top, $position_left, $alpha = null)
{
if (file_exists($icon_src)) {
$this->_icon['src'] = $icon_src;
$this->_icon['sizes'] = getimagesize($icon_src);
$this->_icon['img'] = $this->build_image_from_path($icon_src, $this->_icon['sizes']);
$this->set_icon_position($position_top, $position_left);
if ($alpha != null)
$this->set_icon_alpha($alpha);
return true;
} else {
return false;
}
}
public function set_icon_alpha(int $alpha)
{
$this->_icon['alpha'] = $alpha;
}
public function set_icon_position($position_top, $position_left)
{
if (in_array($position_top, $this->_allowed_position) && in_array($position_left,
$allowed_positions)) {
$this->_icon['position_top'] = $position_top;
$this->_icon['position_left'] = $position_left;
return true;
} else {
return false;
}
}
public function set_text($text, $position_top, $position_left, $hex_color, $size = 20)
{
$this->_text['text'] = $text;
if (in_array($position_top, $this->_allowed_position) && in_array($position_left,
$allowed_positions)) {
$this->_text['position_top'] = $position_top;
$this->_text['position_left'] = $position_left;
$this->set_text_size($size);
$this->set_text_font(3);
$this->set_text_color($hex_color);
$this->reload_text_sizes();
return true;
} else {
return false;
}
}
public function set_text_color($hex)
{
$this->_text['color'] = self::get_rgb_from_hexa($hex);
}
public function set_text_font($font)
{
$this->_text['font'] = $font;
$this->reload_text_sizes();
}
public function set_text_size($size)
{
$this->_text['size'] = $size;
$this->reload_text_sizes();
}
public function remove_icon()
{
$this->_icon = null;
}
public function remove_text()
{
$this->_text = null;
}
public function resize($thumb_width, $thumb_height, $background_color, $filename = null)
{
$this->clear_current_thumb();
$this->_current_thumb['img'] = $this->create_image($thumb_width, $thumb_height);
$this->_current_thumb['sizes'][0] = $thumb_width;
$this->_current_thumb['sizes'][1] = $thumb_height;
$color = self::get_rgb_from_hexa($background_color);
$color = imagecolorallocate($this->_current_thumb['img'], $color[0], $color[1],
$color[2]);
imagefill($this->_current_thumb['img'], 0, 0, $color);
$ratio_source = $this->_source['sizes'][0] / $this->_source['sizes'][1];
$ratio_x = $this->_source['sizes'][0] / $thumb_width;
$ratio_y = $this->_source['sizes'][1] / $thumb_height;
$margin_left = 0;
$margin_top = 0;
if ($ratio_x > $ratio_y) {
$img_width = $thumb_width;
$img_height = $thumb_width / $ratio_source;
$margin_top = $thumb_height / 2 - $img_height / 2;
} elseif ($ratio_x < $ratio_y) {
$img_height = $thumb_height;
$img_width = $thumb_height * $ratio_source;
$margin_left = $thumb_width / 2 - $img_width / 2;
} else {
$img_width = $thumb_width;
$img_height = $thumb_height;
}
$thumb = $this->create_image($img_width, $img_height);
imagecopyresized($thumb, $this->_source['img'], 0, 0, 0, 0, $img_width, $img_height,
$this->_source['sizes'][0], $this->_source['sizes'][1]);
imagecopymerge($this->_current_thumb['img'], $thumb, $margin_left, $margin_top,
0, 0, $img_width, $img_height, 100);
return $filename !== null ? $this->save($filename) : true;
}
public function resize_crop($thumb_width, $thumb_height, $filename = null)
{
$this->clear_current_thumb();
$this->_current_thumb['img'] = $this->create_image($thumb_width, $thumb_height);
$this->_current_thumb['sizes'][0] = $thumb_width;
$this->_current_thumb['sizes'][1] = $thumb_height;
$ratio_x = $this->_source['sizes'][0] / $thumb_width;
$ratio_y = $this->_source['sizes'][1] / $thumb_height;
$mid_height = $thumb_height / 2;
$mid_width = $thumb_width / 2;
if ($ratio_x > $ratio_y) {
$final_width = $this->_source['sizes'][0] / $ratio_y;
$int_width = ($final_width / 2) - $mid_width;
imagecopyresampled($this->_current_thumb['img'], $this->_source['img'], -$int_width,
0, 0, 0, $final_width, $thumb_height, $this->_source['sizes'][0], $this->
_source['sizes'][1]);
} elseif ($ratio_x < $ratio_y) {
$final_height = $this->_source['sizes'][1] / $ratio_x;
$int_height = ($final_height / 2) - $mid_height;
imagecopyresampled($this->_current_thumb['img'], $this->_source['img'], 0, -$int_height,
0, 0, $thumb_width, $final_height, $this->_source['sizes'][0], $this->_source['sizes'][1]);
} else {
imagecopyresampled($this->_current_thumb['img'], $this->_source['img'], 0, 0, 0,
0, $thumb_width, $thumb_height, $this->_source['sizes'][0], $this->_source['sizes'][1]);
}
return $filename !== null ? $this->save($filename) : true;
}
public function resize_width($thumb_width, $filename = null)
{
$this->clear_current_thumb();
return $this->resize_side($thumb_width, 0, $filename);
}
public function resize_height($thumb_height, $filename = null)
{
$this->clear_current_thumb();
return $this->resize_side($thumb_height, 1, $filename);
}
private function resize_side($size, $side = 0, $filename = null)
{
$this->clear_current_thumb();
$other_side = $side == 0 ? 1 : 0;
$ratio = $this->_source['sizes'][$side] / $size;
$other_size = $this->_source['sizes'][$other_side] / $ratio;
$width = $side == 0 ? $size : $other_size;
$height = $side == 1 ? $size : $other_size;
$this->_current_thumb['img'] = $this->create_image($width, $height);
$this->_current_thumb['sizes'] = array(0 => $width, 1 => $height);
imagecopyresampled($this->_current_thumb['img'], $this->_source['img'], 0, 0, 0,
0, $width, $height, $this->_source['sizes'][0], $this->_source['sizes'][1]);
return (int)($side == 1 ? $width : $height);
}
function save($filename)
{
$this->put_icon_if_needed();
$this->put_text_if_needed();
return $this->save_thumb_image($this->_current_thumb['img'], $this->
_save_directory . $filename, $this->_thumbs_quality);
}
public function clean()
{
$this->destroy_image($this->_source['img']);
$this->destroy_image($this->_current_thumb['img']);
$this->destroy_image($this->_icon['img']);
$this->destroy_image($this->_text['img']);
}
    
private function create_image($width, $height)
{
$img = imagecreatetruecolor($width, $height);
$this->manage_transparency($img);
return $img;
}
private function destroy_image($img)
{
if ($img !== null) {
@imagedestroy($img);
unset($img);
}
}
private function clear_current_thumb()
{
$this->destroy_image($this->_current_thumb);
}
private function manage_transparency(&$toimage)
{
$type = $this->_source['sizes'][2];
if ($type == IMAGETYPE_GIF || $type == IMAGETYPE_PNG) {
$index = imagecolortransparent($this->_source['img']);
if ($index >= 0) {
$color = imagecolorsforindex($fromimage, $index);
$index = imagecolorallocate($toimage, $color['red'], $color['green'], $color['blue']);
imagefill($toimage, 0, 0, $index);
imagecolortransparent($toimage, $index);
} elseif ($type == IMAGETYPE_PNG) {
$this->transparent_background($toimage);
}
}
}
private function transparent_background(&$img)
{
imagealphablending($img, false);
$black = imagecolorallocate($img, 0, 0, 0);
imagefill($img, 0, 0, $black);
imagecolortransparent($img, $black);
}
private function build_image_from_path($path, $type)
{
switch ($type) {
case IMAGETYPE_GIF:
return imagecreatefromgif($path);
break;
case IMAGETYPE_PNG:
return imagecreatefrompng($path);
break;
case IMAGETYPE_JPEG:
default:
return imagecreatefromjpeg($path);
break;
}
}
private function save_thumb_image($thumb, $path, $quality)
{
switch (self::get_image_extension($path)) {
case 'gif':
return imagegif($thumb, $path);
break;
case 'png':
return imagepng($thumb, $path);
break;
case 'jpeg':
case 'jpg':
case 'jfif':
case 'jpe':
default:
return imagejpeg($thumb, $path, $quality);
break;
}
}
private function put_icon_if_needed()
{
if ($this->_icon !== null) {
$left = 0;
$top = 0;
$icon_width = $this->_icon['sizes'][0];
$icon_height = $this->_icon['sizes'][1];
$right = $this->_current_thumb['sizes'][0] - $icon_width;
$bottom = $this->_current_thumb['sizes'][1] - $icon_height;
$center_left = $right / 2;
$center_top = $bottom / 2;
switch ($this->_icon['position_left']) {
case 'left':
$this->_icon['margin_left'] = $left;
break;
case 'right':
$this->_icon['margin_left'] = $right;
break;
case 'center':
$this->_icon['margin_left'] = $center_left;
break;
default:
$this->_icon['margin_left'] = 0;
break;
}
switch ($this->_icon['position_top']) {
case 'top':
$this->_icon['margin_top'] = $top;
break;
case 'bottom':
$this->_icon['margin_top'] = $bottom;
break;
case 'center':
$this->_icon['margin_top'] = $center_top;
break;
default:
$this->_icon['margin_top'] = 0;
break;
}
if (!isset($this->_icon['is_built']) || !$this->_icon['is_built']) {
$this->transparent_background($this->_icon['img']);
$this->_icon['is_built'] = true;
}
imagecopymerge($this->_current_thumb['img'], $this->_icon['img'], $this->_icon['margin_left'],
$this->_icon['margin_top'], 0, 0, $icon_width, $icon_height, $this->_icon['alpha']);
}
}
private function put_text_if_needed()
{
if ($this->_text !== null) {
if (!isset($this->_text['color']) || $this->_text['color'] == null)
$this->_text['color'] = array(255, 255, 0);
$left = 0;
$top = 0;
$right = $this->_current_thumb['sizes'][0] - $this->_text['sizes'][0];
$bottom = $this->_current_thumb['sizes'][1] - $this->_text['sizes'][1];
$center_left = $right / 2;
$center_top = $bottom / 2;
switch ($this->_text['position_left']) {
case 'left':
$this->_text['margin_left'] = $left;
break;
case 'right':
$this->_text['margin_left'] = $right;
break;
case 'center':
$this->_text['margin_left'] = $center_left;
break;
default:
$this->_text['margin_left'] = 0;
break;
}
switch ($this->_text['position_top']) {
case 'top':
$this->_text['margin_top'] = $top;
break;
case 'bottom':
$this->_text['margin_top'] = $bottom;
break;
case 'center':
$this->_text['margin_top'] = $center_top;
break;
default:
$this->_text['margin_top'] = 0;
break;
}
$color = imagecolorallocate($this->_current_thumb['img'], $this->_text['color'][0],
$this->_text['color'][1], $this->_text['color'][2]);
$shadow_grey = imagecolorallocate($this->_current_thumb['img'], 128, 128, 128);
if (is_int(intval($this->_text['font']))) {
if (isset($this->_text['shadow']) && $this->_text['shadow'] == true)
imagestring($this->_current_thumb['img'], $this->_text['font'], $this->_text['margin_left'] +
1, $this->_text['margin_top'] + 1, $this->_text['text'], $shadow_grey);
imagestring($this->_current_thumb['img'], $this->_text['font'], $this->_text['margin_left'],
$this->_text['margin_top'], $this->_text['text'], $color);
} else {
if (isset($this->_text['shadow']) && $this->_text['shadow'] == true)
imagettftext($this->_current_thumb['img'], $this->_text['size'], 0, $this->
_text['margin_left'] + 1, $this->_text['margin_top'] + 1, $shadow_grey, $font, $this->
_text['text']);
imagettftext($this->_current_thumb['img'], $this->_text['size'], 0, $this->
_text['margin_left'], $this->_text['margin_top'], $color, $this->_text['font'],
$this->_text['text']);
}
}
}
private function reload_text_sizes()
{
$this->_text['sizes'][0] = imagefontwidth($this->_text['size']) * strlen($this->_text['text']);
$this->_text['sizes'][1] = imagefontheight($this->_text['size']) * 1;
}
}
    <?php
/**
* thumbs_builder
*
* @author Thomas RAMBAUD
* @copyright 2008
* @version 1.0
* @access public
*/
class thumbs_builder
{
protected $_source, $_thumbs_quality, $_save_directory, $_border, $_text, $_icon,
$_current_thumb, $_allowed_position;
public function __construct($source_src, $save_directory, $thumbs_quality = 100)
{
$this->set_source_src($source_src);
$this->set_save_directory($save_directory);
$this->set_thumbs_quality($thumbs_quality);
$this->_allowed_position = array('top', 'bottom', 'left', 'right', 'center');
}
public function get_source_path()
{
return $this->_source['src'];
}
public function get_source_width()
{
return $this->_source['sizes'][0];
}
public function get_source_height()
{
return $this->_source['sizes'][1];
}
public function get_save_directory()
{
return $this->_save_directory;
}
public function get_current_thumb()
{
return $this->_current_thumb['img'];
}
public function get_current_thumb_width()
{
return $this->_current_thumb['sizes'][0];
}
public function get_current_thumb_height()
{
return $this->_current_thumb['sizes'][1];
}
public static function get_random_string($chars_count = 4)
{
$caracteres = "123AaBbCcDdEe456fGgHhIiJjKkLlMmNn789PQqRrSsTtUuVvWwXxYyZz0";
$chaine = '';
srand(time());
for ($i = 0; $i < $chars_count; $i++)
$chaine .= substr($caracteres, rand() % (strlen($caracteres)), 1);
return $chaine;
}
public static function get_image_extension($fn_or_path)
{
return strtolower(substr($fn_or_path, strrpos($fn_or_path, '.') + 1));
}
public static function get_rgb_from_hexa($hex)
{
if ($hex[0] == '#')
$hex = substr($hex, 1);
$nb_cars = strlen($hex);
if ($nb_cars == 6)
list($r, $g, $b) = array($hex[0] . $hex[1], $hex[2] . $hex[3], $hex[4] . $hex[5]);
elseif ($nb_cars == 3)
list($r, $g, $b) = array($hex[0] . $hex[0], $hex[1] . $hex[1], $hex[2] . $hex[2]);
else
return false;
$r = hexdec($r);
$g = hexdec($g);
$b = hexdec($b);
return array($r, $g, $b);
}
public function set_source_src($source_src)
{
if (file_exists($source_src)) {
$this->_source['src'] = $source_src;
$this->_source['sizes'] = getimagesize($source_src);
$this->_source['img'] = $this->build_image_from_path($source_src, $this->_source['sizes'][2]);
return true;
} else {
return false;
}
}
public function set_save_directory($save_directory)
{
if (is_dir($save_directory)){
$this->_save_directory = $save_directory;
return true;
}
else{
return false;
}
}
public function set_thumbs_quality($quality)
{
$this->_thumbs_quality = ($quality >= 0 && $quality <= 100) ? $quality : 100;
}
public function set_icon($icon_src, $position_top, $position_left, $alpha = null)
{
if (file_exists($icon_src)) {
$this->_icon['src'] = $icon_src;
$this->_icon['sizes'] = getimagesize($icon_src);
$this->_icon['img'] = $this->build_image_from_path($icon_src, $this->_icon['sizes']);
$this->set_icon_position($position_top, $position_left);
if ($alpha != null)
$this->set_icon_alpha($alpha);
return true;
} else {
return false;
}
}
public function set_icon_alpha(int $alpha)
{
$this->_icon['alpha'] = $alpha;
}
public function set_icon_position($position_top, $position_left)
{
if (in_array($position_top, $this->_allowed_position) && in_array($position_left,
$allowed_positions)) {
$this->_icon['position_top'] = $position_top;
$this->_icon['position_left'] = $position_left;
return true;
} else {
return false;
}
}
public function set_text($text, $position_top, $position_left, $hex_color, $size = 20)
{
$this->_text['text'] = $text;
if (in_array($position_top, $this->_allowed_position) && in_array($position_left,
$allowed_positions)) {
$this->_text['position_top'] = $position_top;
$this->_text['position_left'] = $position_left;
$this->set_text_size($size);
$this->set_text_font(3);
$this->set_text_color($hex_color);
$this->reload_text_sizes();
return true;
} else {
return false;
}
}
public function set_text_color($hex)
{
$this->_text['color'] = self::get_rgb_from_hexa($hex);
}
public function set_text_font($font)
{
$this->_text['font'] = $font;
$this->reload_text_sizes();
}
public function set_text_size($size)
{
$this->_text['size'] = $size;
$this->reload_text_sizes();
}
public function remove_icon()
{
$this->_icon = null;
}
public function remove_text()
{
$this->_text = null;
}
public function resize($thumb_width, $thumb_height, $background_color, $filename = null)
{
$this->clear_current_thumb();
$this->_current_thumb['img'] = $this->create_image($thumb_width, $thumb_height);
$this->_current_thumb['sizes'][0] = $thumb_width;
$this->_current_thumb['sizes'][1] = $thumb_height;
$color = self::get_rgb_from_hexa($background_color);
$color = imagecolorallocate($this->_current_thumb['img'], $color[0], $color[1],
$color[2]);
imagefill($this->_current_thumb['img'], 0, 0, $color);
$ratio_source = $this->_source['sizes'][0] / $this->_source['sizes'][1];
$ratio_x = $this->_source['sizes'][0] / $thumb_width;
$ratio_y = $this->_source['sizes'][1] / $thumb_height;
$margin_left = 0;
$margin_top = 0;
if ($ratio_x > $ratio_y) {
$img_width = $thumb_width;
$img_height = $thumb_width / $ratio_source;
$margin_top = $thumb_height / 2 - $img_height / 2;
} elseif ($ratio_x < $ratio_y) {
$img_height = $thumb_height;
$img_width = $thumb_height * $ratio_source;
$margin_left = $thumb_width / 2 - $img_width / 2;
} else {
$img_width = $thumb_width;
$img_height = $thumb_height;
}
$thumb = $this->create_image($img_width, $img_height);
imagecopyresized($thumb, $this->_source['img'], 0, 0, 0, 0, $img_width, $img_height,
$this->_source['sizes'][0], $this->_source['sizes'][1]);
imagecopymerge($this->_current_thumb['img'], $thumb, $margin_left, $margin_top,
0, 0, $img_width, $img_height, 100);
return $filename !== null ? $this->save($filename) : true;
}
public function resize_crop($thumb_width, $thumb_height, $filename = null)
{
$this->clear_current_thumb();
$this->_current_thumb['img'] = $this->create_image($thumb_width, $thumb_height);
$this->_current_thumb['sizes'][0] = $thumb_width;
$this->_current_thumb['sizes'][1] = $thumb_height;
$ratio_x = $this->_source['sizes'][0] / $thumb_width;
$ratio_y = $this->_source['sizes'][1] / $thumb_height;
$mid_height = $thumb_height / 2;
$mid_width = $thumb_width / 2;
if ($ratio_x > $ratio_y) {
$final_width = $this->_source['sizes'][0] / $ratio_y;
$int_width = ($final_width / 2) - $mid_width;
imagecopyresampled($this->_current_thumb['img'], $this->_source['img'], -$int_width,
0, 0, 0, $final_width, $thumb_height, $this->_source['sizes'][0], $this->
_source['sizes'][1]);
} elseif ($ratio_x < $ratio_y) {
$final_height = $this->_source['sizes'][1] / $ratio_x;
$int_height = ($final_height / 2) - $mid_height;
imagecopyresampled($this->_current_thumb['img'], $this->_source['img'], 0, -$int_height,
0, 0, $thumb_width, $final_height, $this->_source['sizes'][0], $this->_source['sizes'][1]);
} else {
imagecopyresampled($this->_current_thumb['img'], $this->_source['img'], 0, 0, 0,
0, $thumb_width, $thumb_height, $this->_source['sizes'][0], $this->_source['sizes'][1]);
}
return $filename !== null ? $this->save($filename) : true;
}
public function resize_width($thumb_width, $filename = null)
{
$this->clear_current_thumb();
return $this->resize_side($thumb_width, 0, $filename);
}
public function resize_height($thumb_height, $filename = null)
{
$this->clear_current_thumb();
return $this->resize_side($thumb_height, 1, $filename);
}
private function resize_side($size, $side = 0, $filename = null)
{
$this->clear_current_thumb();
$other_side = $side == 0 ? 1 : 0;
$ratio = $this->_source['sizes'][$side] / $size;
$other_size = $this->_source['sizes'][$other_side] / $ratio;
$width = $side == 0 ? $size : $other_size;
$height = $side == 1 ? $size : $other_size;
$this->_current_thumb['img'] = $this->create_image($width, $height);
$this->_current_thumb['sizes'] = array(0 => $width, 1 => $height);
imagecopyresampled($this->_current_thumb['img'], $this->_source['img'], 0, 0, 0,
0, $width, $height, $this->_source['sizes'][0], $this->_source['sizes'][1]);
return (int)($side == 1 ? $width : $height);
}
function save($filename)
{
$this->put_icon_if_needed();
$this->put_text_if_needed();
return $this->save_thumb_image($this->_current_thumb['img'], $this->
_save_directory . $filename, $this->_thumbs_quality);
}
public function clean()
{
$this->destroy_image($this->_source['img']);
$this->destroy_image($this->_current_thumb['img']);
$this->destroy_image($this->_icon['img']);
$this->destroy_image($this->_text['img']);
}
private function create_image($width, $height)
{
$img = imagecreatetruecolor($width, $height);
$this->manage_transparency($img);
return $img;
}
private function destroy_image($img)
{
if ($img !== null) {
@imagedestroy($img);
unset($img);
}
}
private function clear_current_thumb()
{
$this->destroy_image($this->_current_thumb);
}
private function manage_transparency(&$toimage)
{
$type = $this->_source['sizes'][2];
if ($type == IMAGETYPE_GIF || $type == IMAGETYPE_PNG) {
$index = imagecolortransparent($this->_source['img']);
if ($index >= 0) {
$color = imagecolorsforindex($fromimage, $index);
$index = imagecolorallocate($toimage, $color['red'], $color['green'], $color['blue']);
imagefill($toimage, 0, 0, $index);
imagecolortransparent($toimage, $index);
} elseif ($type == IMAGETYPE_PNG) {
$this->transparent_background($toimage);
}
}
}
private function transparent_background(&$img)
{
imagealphablending($img, false);
$black = imagecolorallocate($img, 0, 0, 0);
imagefill($img, 0, 0, $black);
imagecolortransparent($img, $black);
}
private function build_image_from_path($path, $type)
{
switch ($type) {
case IMAGETYPE_GIF:
return imagecreatefromgif($path);
break;
case IMAGETYPE_PNG:
return imagecreatefrompng($path);
break;
case IMAGETYPE_JPEG:
default:
return imagecreatefromjpeg($path);
break;
}
}
private function save_thumb_image($thumb, $path, $quality)
{
switch (self::get_image_extension($path)) {
case 'gif':
return imagegif($thumb, $path);
break;
case 'png':
return imagepng($thumb, $path);
break;
case 'jpeg':
case 'jpg':
case 'jfif':
case 'jpe':
default:
return imagejpeg($thumb, $path, $quality);
break;
}
}
private function put_icon_if_needed()
{
if ($this->_icon !== null) {
$left = 0;
$top = 0;
$icon_width = $this->_icon['sizes'][0];
$icon_height = $this->_icon['sizes'][1];
$right = $this->_current_thumb['sizes'][0] - $icon_width;
$bottom = $this->_current_thumb['sizes'][1] - $icon_height;
$center_left = $right / 2;
$center_top = $bottom / 2;
switch ($this->_icon['position_left']) {
case 'left':
$this->_icon['margin_left'] = $left;
break;
case 'right':
$this->_icon['margin_left'] = $right;
break;
case 'center':
$this->_icon['margin_left'] = $center_left;
break;
default:
$this->_icon['margin_left'] = 0;
break;
}
switch ($this->_icon['position_top']) {
case 'top':
$this->_icon['margin_top'] = $top;
break;
case 'bottom':
$this->_icon['margin_top'] = $bottom;
break;
case 'center':
$this->_icon['margin_top'] = $center_top;
break;
default:
$this->_icon['margin_top'] = 0;
break;
}
if (!isset($this->_icon['is_built']) || !$this->_icon['is_built']) {
$this->transparent_background($this->_icon['img']);
$this->_icon['is_built'] = true;
}
imagecopymerge($this->_current_thumb['img'], $this->_icon['img'], $this->_icon['margin_left'],
$this->_icon['margin_top'], 0, 0, $icon_width, $icon_height, $this->_icon['alpha']);
}
}
private function put_text_if_needed()
{
if ($this->_text !== null) {
if (!isset($this->_text['color']) || $this->_text['color'] == null)
$this->_text['color'] = array(255, 255, 0);
$left = 0;
$top = 0;
$right = $this->_current_thumb['sizes'][0] - $this->_text['sizes'][0];
$bottom = $this->_current_thumb['sizes'][1] - $this->_text['sizes'][1];
$center_left = $right / 2;
$center_top = $bottom / 2;
switch ($this->_text['position_left']) {
case 'left':
$this->_text['margin_left'] = $left;
break;
case 'right':
$this->_text['margin_left'] = $right;
break;
case 'center':
$this->_text['margin_left'] = $center_left;
break;
default:
$this->_text['margin_left'] = 0;
break;
}
switch ($this->_text['position_top']) {
case 'top':
$this->_text['margin_top'] = $top;
break;
case 'bottom':
$this->_text['margin_top'] = $bottom;
break;
case 'center':
$this->_text['margin_top'] = $center_top;
break;
default:
$this->_text['margin_top'] = 0;
break;
}
$color = imagecolorallocate($this->_current_thumb['img'], $this->_text['color'][0],
$this->_text['color'][1], $this->_text['color'][2]);
$shadow_grey = imagecolorallocate($this->_current_thumb['img'], 128, 128, 128);
if (is_int(intval($this->_text['font']))) {
if (isset($this->_text['shadow']) && $this->_text['shadow'] == true)
imagestring($this->_current_thumb['img'], $this->_text['font'], $this->_text['margin_left'] +
1, $this->_text['margin_top'] + 1, $this->_text['text'], $shadow_grey);
imagestring($this->_current_thumb['img'], $this->_text['font'], $this->_text['margin_left'],
$this->_text['margin_top'], $this->_text['text'], $color);
} else {
if (isset($this->_text['shadow']) && $this->_text['shadow'] == true)
imagettftext($this->_current_thumb['img'], $this->_text['size'], 0, $this->
_text['margin_left'] + 1, $this->_text['margin_top'] + 1, $shadow_grey, $font, $this->
_text['text']);
imagettftext($this->_current_thumb['img'], $this->_text['size'], 0, $this->
_text['margin_left'], $this->_text['margin_top'], $color, $this->_text['font'],
$this->_text['text']);
}
}
}
private function reload_text_sizes()
{
$this->_text['sizes'][0] = imagefontwidth($this->_text['size']) * strlen($this->_text['text']);
$this->_text['sizes'][1] = imagefontheight($this->_text['size']) * 1;
}
}
