Si vous connaissez la bibliothèque GD de PHP, il n'est pas du tout difficile de comprendre cet article !
<?php
/*************************************************** ***** *****************************
Description du paramètre :
$max_file_size : taille limite du fichier de téléchargement, unité BYTE
$destination_folder : chemin du fichier de téléchargement
$watermark : s'il faut ajouter un filigrane (1 signifie ajouter un filigrane, d'autres signifie ne pas ajouter de filigrane).
Mode d'emploi :
1. Supprimez le signe ; devant la ligne "extension=php_gd2.dll" dans le fichier PHP.INI, car nous devons utiliser la bibliothèque GD ;
2. Remplacez extension_dir = par le répertoire où se trouve votre php_gd2.dll ;
************************************************** * *****************************/
//Télécharger la liste des types de fichiers
$uptypes=tableau(
'image/jpg',
'image/jpeg',
'image/png',
'image/pjpeg',
'image/gif',
'image/bmp',
'image/x-png'
);
$max_file_size=2000000; //Taille limite du fichier de téléchargement, unité BYTE
$destination_folder="uploadimg/"; //Chemin du fichier de téléchargement
$watermark=1; //S'il faut ajouter un filigrane (1 signifie ajouter un filigrane, d'autres signifie ne pas ajouter de filigrane) ;
$watertype=1; //Type de filigrane (1 est du texte, 2 est une image)
$waterposition=1; //Position du filigrane (1 est le coin inférieur gauche, 2 est le coin inférieur droit, 3 est le coin supérieur gauche, 4 est le coin supérieur droit, 5 est au centre) ;
$waterstring=" http://www.xplore.cn/ " ; //Chaîne de filigrane
$waterimg="xplore.gif"; //image en filigrane
$imgpreview=1; //S'il faut générer une image d'aperçu (1 signifie généré, les autres ne génèrent pas) ;
$imgpreviewsize=1/2; //Rapport des vignettes
?>
<html>
<tête>
<title>Programme de téléchargement d'images ZwelL</title>
<style type="text/css">
<!--
corps
{
taille de police : 9 pt ;
}
saisir
{
couleur d'arrière-plan : #66CCFF ;
bordure : 1px en médaillon #CCCCCC ;
}
-->
</style>
</tête>
<corps>
<form enctype="multipart/form-data" method="post" name="upform">
Téléchargez des fichiers :
<input name="upfile" type="file">
<input type="submit" value="Télécharger"><br>
Les types de fichiers autorisés à être téléchargés sont :<?=implode(', ',$uptypes)?>
</form>
<?php
si ($_SERVER['REQUEST_METHOD'] == 'POST')
{
si (!is_uploaded_file($_FILES["upfile"][tmp_name]))
//Le fichier existe-t-il ?
{
echo "L'image n'existe pas !";
sortie;
}
$fichier = $_FILES["upfile"];
si($max_file_size < $file["size"])
//vérifie la taille du fichier
{
echo "Le fichier est trop volumineux !";
sortie;
}
if(!in_array($file["type"], $uptypes))
//vérifie le type de fichier
{
echo "Le type de fichier ne correspond pas!".$file["type"];
sortie;
}
if(!file_exists($destination_folder))
{
mkdir($destination_folder);
}
$filename=$file["tmp_name"];
$image_size = getimagesize($filename);
$pinfo=pathinfo($file["nom"]);
$ftype=$pinfo['extension'];
$destination = $destination_folder.time().".".$ftype;
if (file_exists($destination) && $overwrite != true)
{
echo "Le fichier du même nom existe déjà";
sortie;
}
if(!move_uploaded_file ($nom du fichier, $destination))
{
echo "Erreur lors du déplacement du fichier" ;
sortie;
}
$pinfo=pathinfo($destination);
$fname=$pinfo[nom de base];
echo " <font color=red>Téléchargé avec succès</font><br>Nom du fichier : <font color=blue>".$destination_folder.$fname."</font><br>";
echo "Largeur :".$image_size[0];
echo "longueur :".$image_size[1];
echo "<br> taille :".$file["size"]." octets"
if($watermark==1)
{
$iinfo=getimagesize($destination,$iinfo);
$nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
$white=imagecolorallocate($nimage,255,255,255);
$black=imagecolorallocate($nimage,0,0,0);
$red=imagecolorallocate($nimage,255,0,0);
imagefill($nimage,0,0,$white);
changer ($iinfo[2])
{
cas 1 :
$simage =imagecreatefromgif($destination);
casser;
cas 2 :
$simage =imagecreatefromjpeg($destination);
casser;
cas 3 :
$simage =imagecreatefrompng($destination);
casser;
cas 6 :
$simage =imagecreatefromwbmp($destination);
casser;
défaut:
die("Type de fichier non pris en charge";
sortie;
}
imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white commutateur
($watertype)
);
{
cas 1 : //Ajouter une chaîne de filigrane
imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);
casser;
cas 2 : //Ajouter une image en filigrane
$simage1 =imagecreatefromgif("xplore.gif";
imagecopie($nimage,$simage1,0,0,0,0,85,15);
imagedestroy($simage1);
casser;
}
commutateur ($iinfo[2])
{
cas 1 :
//imagegif($nimage, $destination);
imagejpeg($nimage, $destination);
casser;
cas 2 :
imagejpeg($nimage, $destination);
casser;
cas 3 :
imagepng($nimage, $destination);
casser;
cas 6 :
imagewbmp($nimage, $destination);
//imagejpeg($nimage, $destination);
casser;
}
//Écraser le fichier original téléchargé
imagedestroy($nimage);
imagedestroy($simage);
}
si($imgpreview==1)
{
echo "<br>Aperçu de l'image :<br>";
echo "<img src="".$destination."" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
echo " alt="Aperçu de l'image :rNom du fichier :".$destination."rHeure de téléchargement :">";
}
}
?>
</corps>
</html>
Enfin, je pense qu'il est nécessaire de parler du principe du filigrane des images :
obtenir les informations du fichier téléchargé, créer une image en vraies couleurs, attribuer un jeu de couleurs et remplir l'image.
Créez un graphique en jugeant le type de fichier, puis copiez-le dans le graphique créé à l'origine, remplissez et créez un rectangle, prêt à être écrit dans imagestring() ou dans le
programme d'image d'origine pour déterminer le type de filigrane : l'un est une chaîne, le l'autre est Ajouter un objet graphique en haut.