Script php

hamza_11 Messages postés 26 Statut Membre -  
hamza_11 Messages postés 26 Statut Membre -
Bonjour,

je veut un script php qui peut écrire un texte sur mes image,svp

2 réponses

  1. SmokeMax Messages postés 74 Statut Membre 27
     
    Tu veux un café et des biscuits aussi ? Si tu expliquais en détail et plus poliment que ça, ça aiderait
    0
  2. hamza_11 Messages postés 26 Statut Membre
     
    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"
    0
    1. Templier Nocturne Messages postés 9989 Statut Membre 1 107
       
      oui, et où est le problème ?...
      0
    2. hamza_11 Messages postés 26 Statut Membre
       
      le problème que j'ai plusieurs d'image je veut écrire une texte une seul fois
      0
    3. Templier Nocturne Messages postés 9989 Statut Membre 1 107
       
      oui, et ?

      où est le problème ?
      0
    4. hamza_11 Messages postés 26 Statut 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;
      }

      }
      0
    5. Templier Nocturne Messages postés 9989 Statut Membre 1 107
       
      pourquoi une telle usine à gaz juste pour ce que tu veux faire ?...

      as tu cherché à travailler par toi même avant de prendre un script tout fait ?
      0