Multiplier votre capacite de memorisation par 10
Page d acceuil Acceuil
Bienvenue sur votre bureau MetaComputer
Page d acceuil Mes licences
Acquerir un logiciel ou un service MetaComputer
Page d acceuil Gestion commerciale :
Devis, commandes, stock...
connexion à modabbir bureau
Se retrouver dans un véritable marché
Page d acceuil Hassib (comptabilite generale) :
Saisir, importer votre balance..
Sortir vos etats fiscaux,
Envoyer votre declaration via internet
Page d acceuil Adae : Gestion de paye.. :
Gestion de personnels,
elaborer bulletins de paye
effectuer la declaration de CNSS
Page d acceuil Meta Clouds = MetaUSB.. :
Votre espace de stockage offert par
MetaComputer. c'eat aussi lié à vos base de données,
si vous travaillez avec une application MetaComputer
Page d acceuil Al Morakib
pour surveiller et controler par cameras
ma maison, mon lieu de travail, mes depots...
Page d acceuil Mes PCs :pour surveiller et controler
mes ordinateurs, ceux de mes enfants
et meme les pcs du lieu de travail
Page d acceuil Service Meta GPS :
Reperer vos vehicules
Suivre et controler a distance
tous vos vehicules..
Page d acceuil Meta FAX
Envoyer des FAX sans ligne
et sans apareil
Decoller...
Page d acceuil Emailer
Envoyer à des Miliers
des e-mails de prospection
Page d acceuil Service MetaSMS :
Envoyer et gerer vos SMS
Faire des compagnes publicitaires
Avec des résultats sures et optimaux
Page d acceuil Meta-eEntreprise :
Votre entreprise sur le net..
Lancer, suivre une action commerciale
Page d acceuil Meta-eFormation :
Des supports de formation tres adaptés
à votre développement personnel,
A une activité professionnelle de pointe...
Page d acceuil jeux :
jeux pour les enfants
aussi pour les grands
Super-Logiciels pour vous
Al Morakib
Logiciel de serveillance par camera et par internet ...
Al Adae
Logiciel de gestion de paiy et de personnel ...
AsSaydalani
Un logiciel pour la gestion pharmaceutique ... - ventes aux guichets, reglements
- utilisation de codes barres
- Base de données des médicament saisie et ajour
- Gestion des achats et des fournisseurs
- Gestion des peromptions
- ...
Al Fondoki
Logiciel de la gestion hôteliere:
Réservations, main courante, poits de vente, dépôts, occupation des chambres, ...
Plus
Projets pour vous
Net sou9 / e-souk
NetFavoris 
NOUS |  contacter-nous
Avenue des F.A.R. Rsidence Niama N6 - Ttouan (Maroc)
Tl :(+212) 8 90 60 52 25
Fax :(+212) 5 39 97 25 15
Mobile :(+212) 6 61 10 74 37
Email :mce@meta-computer.com
 

Acceuil  php, js(431)  [PHP 5] Classe utilitaire pour manipuler des images
[PHP 5] Classe utilitaire pour manipuler des images 2010-12-27

C'est une classe php5 donc pour ceux qui voudraient l'utiliser en php4,
il faut juste changer les "private" des attributs en "var", et mettre un constructeur php4.
/**
* Classe ImageTools
*
* Manipulation d'images
* @author siddh
* @version 1.0
* @package Utils
*/
class ImageTools
{
const X = 0;
const Y = 1;
const TOP = 2;
const BOTTOM = 3;
const LEFT = 4;
const RIGHT = 5;
const CENTER = 6;
const MIDDLE = 7;

/**#@+
* @access private
* @var php_image_resource
*/
private $img;
private $dstImg;
/**#@-*/

/**#@+
* @access private
* @var int
*/
private $srcWidth;
private $srcHeight;
/**#@-*/

/**#@+
* @access private
* @var string
*/
private $file;
private $ext;
private $srcPath;
private $dstPath;
private $font;
/**#@-*/

/**#@+
* @access private
* @var array
*/
private $textColor;
private $bgColor;
private $old;
/**#@-*/

/**
* Constructeur
*/
public function __construct()
{
$this->textColor = array("r" => 0, "g" => 0, "b" => 0);
$this->bgColor = array("r" => 255, "g" => 255, "b" => 255);
// A vous de mettre un chemin vers la police que vous voulez utiliser
$this->font = $GLOBALS["SystemRoot"]."/include/font/VERDANA.TTF";
}

/**
* Charge une image en mémoire afin de pouvoir la manipuler
* Récupère la couleur du premier pixel et l'affecte à $bgColor
* @param String Le chemin de l'image
*/
public function loadImage($img)
{
if (file_exists($img))
{
$tab = pathinfo($img);
$this->srcPath = $tab["dirname"];
$this->file = $tab["basename"];
$this->ext = $tab["extension"];

if ($this->ext == "jpg")
$this->img = imagecreatefromjpeg($img);
if ($this->ext == "png")
$this->img = imagecreatefrompng($img);
if ($this->ext == "gif")
$this->img = imagecreatefromgif($img);

$this->setBgColorWithFirstPixel();

$srcSize = getImageSize($img);
$this->srcWidth = $srcSize[0];
$this->srcHeight = $srcSize[1];

}
}

/**
* Récupère la couleur du premier pixel et l'affecte à $bgColor
*/
private function setBgColorWithFirstPixel()
{
$rgb = ImageColorAt($this->img, 0, 0);

$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;

$this->setBgColor($r,$g,$b);
}

/**
* Retaille une image
* Méthode à arguments variables
* Si un seul argument :
* - l'argument est le ratio qui peut être :
* - un pourcentage en chaine de caractères : "50%"
* - une valeur comme 1.5 (150%) ou 0.5 (50%)
* Si deux arguments :
* - le premier est la largeur
* - le deuxième est la hauteur
* - dans ce cas, le meilleur ratio est calculé pour ne pas déformer l'image
* Pour récupérer l'image transformée, il faut faire un saveAs
* @see saveAs()
*/
public function resizeTo()
{
$ratio = -1;
$dest_width = 0;
$dest_height = 0;
$numArgs = func_num_args();
if($numArgs == 1)
{
$ratio = func_get_arg(0);
$perc = strrpos($ratio,"%");
if($perc)
$ratio = substr($ratio,0,$perc)/100;
$dest_width = $this->srcWidth*$ratio;
$dest_height = $this->srcHeight*$ratio;
}
elseif ($numArgs == 2)
{
$dest_width = func_get_arg(0);
$dest_height = func_get_arg(1);
}
else
return;
$this->resize($dest_width,$dest_height);
}

/**
* Retaille une image avec une nouvelle largeur
* L'image n'est pas déformée car la hauteur est recalculée
* Pour récupérer l'image transformée, il faut faire un saveAs
* @param int La nouvelle largeur
* @see saveAs()
*/
public function resizeByWidth($width)
{
$this->resizeTo($width/$this->srcWidth);
}

/**
* Retaille une image avec une nouvelle hauteur
* L'image n'est pas déformée car la largeur est recalculée
* Pour récupérer l'image transformée, il faut faire un saveAs
* @param int La nouvelle hauteur
* @see saveAs()
*/
public function resizeByHeight($height)
{
$this->resizeTo($height/$this->srcHeight);
}

/**
* Retaille une image
* L'image n'est pas déformée car le meilleur ratio est calculé
* @param int La nouvelle largeur
* @param int La nouvelle hauteur
*/
private function resize($maxWidth, $maxHeight)
{
$srcRatio = $this->srcWidth/$this->srcHeight;
$destRatio = $maxWidth/$maxHeight;

if ($destRatio > $srcRatio)
{
$destSize[1] = $maxHeight;
$destSize[0] = $maxHeight*$srcRatio;
}
else
{
$destSize[0] = $maxWidth;
$destSize[1] = $maxWidth/$srcRatio;
}

$this->dstImg = imagecreatetruecolor($destSize[0],$destSize[1]);
imageAntiAlias($this->dstImg,true);

$color = imagecolorallocate($this->dstImg, $this->bgColor["r"],
$this->bgColor["g"], $this->bgColor["b"]);


imagefill($this->dstImg,0,0,$color);

imageCopy($this->dstImg, $this->img, 0, 0, 0, 0,$destSize[0],
$destSize[1],$this->srcWidth,$this->srcHeight);

$this->img = $this->dstImg;
$this->srcWidth = $destSize[0];
$this->srcHeight = $destSize[1];
}

/**
* Ajoute du texte à une image
* Le texte peut être ajouté à 9 endroits :
* - en haut à gauche
* - en haut au milieu
* - en haut à droite
* - au milieu à gauche
* - au milieu au milieu
* - au milieu à droite
* - en bas à gauche
* - en bas au milieu
* - en bas à droite
* Par défaut, si on ne passe que le texte en argument,
* la taille de la police sera 8,
* la position en bas au milieu,
* Les valeurs à passer pour la position horizontale et verticale sont des constantes
* @param String Le texte à ajouter
* @param int La taille de la police, par défaut 8
* @param int Une constante pour la position verticale (TOP,BOTTOM,CENTER), par défaut BOTTOM
* @param int Une constante pour la position horizontale (LEFT,RIGHT, CENTER), par défaut CENTER
*/
public function addTexte($texte, $fontSize=8, $vPos=BOTTOM, $hPos=CENTER)
{
$basefont = $fontSize;
$margin = 5;
$bottomMargin = round($fontSize/6) -1;
$description = $texte;
$box = imageTTFBBox ( $basefont, 0, $this->font, $description);

$boxWidth = $box[2] - $box[0] + $margin*2;
$boxHeight = $box[1] - $box[7] + $margin*2;

$width = 0;
$height = 0;

if($boxWidth <= $this->srcWidth)
$width = $this->srcWidth;
else
$width = $boxWidth;

if($boxHeight <= $this->srcHeight)
$height = $this->srcHeight;
else
$height = $boxHeight + $bottomMargin;

$tabX = array();
$tabY = array();

$tabX[LEFT] = $margin;
$tabX[CENTER] = ($width - $boxWidth) / 2 + $margin;
$tabX[RIGHT] = $width - $boxWidth + $margin;

$tabY[TOP] = $boxHeight - $margin;
$tabY[CENTER] = ($height + $boxHeight) / 2 +$margin;
$tabY[BOTTOM] = $height - $margin - $bottomMargin;

$this->dstImg = imagecreatetruecolor($width,$height);
imageAntiAlias($this->dstImg,true);

$color = imagecolorallocate($this->dstImg, $this->bgColor["r"],
$this->bgColor["g"], $this->bgColor["b"]);
imagefill($this->dstImg,0,0,$color);

$acolor = imagecolorallocate($this->img, $this->bgColor["r"],
$this->bgColor["g"], $this->bgColor["b"]);
imagefill($this->img,0,0,$acolor);

$imgX = ($width - $this->srcWidth) / 2;
$imgY = ($height - $this->srcHeight) / 2;

imagecopy($this->dstImg, $this->img, $imgX,$imgY, 0,0, $this->srcWidth, $this->srcHeight);

$textColor = imagecolorallocate($this->dstImg, $this->textColor["r"],
$this->textColor["g"], $this->textColor["b"]);
imagettftext($this->dstImg, $fontSize, 0, $tabX[$hPos], $tabY[$vPos],
$textColor, $this->font, $description);

$this->img = $this->dstImg;
$this->srcWidth = $boxWidth;
$this->srcHeight = $boxHeight;

}

/**
* Enregistre l'image sur le disque en png
* @param String Le chemin de l'image sans l'extension
* @todo Prevoir que l'utilisateur fournisse une extension
*/
public function saveAs($name)
{
imagepng($this->img,$name.".png");
}

/**
* Retourne la couleur du texte
* Tableau associatif avec les clés "r", "g" et "b"
* @return array un tableau contenant les valeurs rgb de la couleur du texte
*/
public function getTextColor()
{
return $this->textColor;
}

/**
* Affecte la couleur du texte
* @param int Paramètre r de rgb
* @param int Paramètre g de rgb
* @param int Paramètre b de rgb
*/
public function setTextColor($r,$g,$b)
{
$this->textColor["r"] = $r;
$this->textColor["g"] = $g;
$this->textColor["b"] = $b;
}

/**
* Affecte la couleur du fond
* @param int Paramètre r de rgb
* @param int Paramètre g de rgb
* @param int Paramètre b de rgb
*/
public function setBgColor($r,$g,$b)
{
$this->old["r"] = $this->bgColor["r"];
$this->old["g"] = $this->bgColor["g"];
$this->old["b"] = $this->bgColor["b"];
$this->bgColor["r"] = $r;
$this->bgColor["g"] = $g;
$this->bgColor["b"] = $b;
}

}
?>

Commentaires des visiteurs :
Ajouter votre commentaire :
Nom :
E-mail :
Commentaire :


Espace Abonné

Mot passe oublié?

Créez un compte maintenant.
Publicité
 
Copyright ©2020. Metacomputer Engineering s.a.r.l . tous les droits réservés