Si está familiarizado con la biblioteca GD de PHP, ¡no será nada difícil entender este artículo!
<?php
/*************************************************** ***** *******************************
Descripción del parámetro:
$max_file_size: límite de tamaño de archivo de carga, unidad BYTE
$destination_folder: ruta de carga del archivo
$watermark: si se debe agregar una marca de agua (1 significa agregar una marca de agua, otros significa no agregar una marca de agua)
;
1. Elimine el signo ; delante de la línea "extension=php_gd2.dll" en el archivo PHP.INI, porque necesitamos usar la biblioteca GD;
2. Cambie extension_dir = al directorio donde se encuentra su php_gd2.dll;
************************************************** * *****************************/
//Subir lista de tipos de archivos
$uptypes=matriz(
'imagen/jpg',
'imagen/jpeg',
'imagen/png',
'imagen/pjpeg',
'imagen/gif',
'imagen/bmp',
'imagen/x-png'
);
$max_file_size=2000000; //Subir límite de tamaño de archivo, unidad BYTE;
$destination_folder="uploadimg/"; //Subir ruta del archivo
$watermark=1; //Si agregar una marca de agua (1 significa agregar una marca de agua, otros significan no agregar una marca de agua);
$watertype=1; //Tipo de marca de agua (1 es texto, 2 es imagen)
$waterposition=1; // Posición de la marca de agua (1 es la esquina inferior izquierda, 2 es la esquina inferior derecha, 3 es la esquina superior izquierda, 4 es la esquina superior derecha, 5 está en el centro);
$waterstring=" http://www.xplore.cn/ "; //Cadena de marca de agua
$waterimg="xplore.gif"; //imagen de marca de agua
$imgpreview=1; //Si generar una imagen de vista previa (1 significa generada, otros no generan);
$imgpreviewsize=1/2; //Relación de miniaturas
?>
<html>
<cabeza>
<title>Programa de carga de imágenes ZwellL</title>
<tipo de estilo="texto/css">
<!--
cuerpo
{
tamaño de fuente: 9 puntos;
}
aporte
{
color de fondo: #66CCFF;
borde: 1px inserto #CCCCCC;
}
-->
</estilo>
</cabeza>
<cuerpo>
<formulario enctype="multipart/form-data" método="publicación" nombre="upform">
Subir archivos:
<nombre de entrada="archivo superior" tipo="archivo">
<tipo de entrada="enviar" valor="Subir"><br>
Los tipos de archivos que se pueden cargar son:<?=implode(', ',$uptypes)?>
</form>
<?php
si ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!is_uploaded_file($_FILES["upfile"][tmp_name]))
//¿Existe el archivo?
{
echo "¡La imagen no existe!";
salida;
}
$archivo = $_FILES["upfile"];
if($max_file_size < $archivo["tamaño"])
//comprueba el tamaño del archivo
{
echo "¡El archivo es demasiado grande!";
salida;
}
if(!in_array($archivo["tipo"], $uptypes))
//comprueba el tipo de archivo
{
echo "¡El tipo de archivo no coincide!".$file["tipo"];
salida;
}
if(!file_exists($carpeta_destino))
{
mkdir($carpeta_destino);
}
$nombredearchivo=$archivo["tmp_name"];
$image_size = getimagesize($nombre de archivo);
$pinfo=rutainfo($archivo["nombre"]);
$ftype=$pinfo['extensión'];
$destino = $carpeta_destino.time().".".$ftype;
if (file_exists($destino) && $sobrescribir!= verdadero)
{
echo "El archivo con el mismo nombre ya existe";
salida;
}
if(!move_uploaded_file ($nombre de archivo, $destino))
{
echo "Error al mover el archivo";
salida;
}
$pinfo=pathinfo($destino);
$fname=$pinfo[nombrebase];
echo " <font color=red>Subido correctamente</font><br>Nombre de archivo: <font color=blue>".$destination_folder.$fname."</font><br>";
echo "Ancho:".$image_size[0];
echo "longitud:".$image_size[1];
echo "<br> tamaño:".$archivo["tamaño"]." bytes"
;
{
$iinfo=getimagesize($destino,$iinfo);
$nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
$blanco=imagecolorallocate($nimage,255,255,255);
$negro=imagecolorallocate($nimage,0,0,0);
$rojo=imagecolorallocate($nimage,255,0,0);
imagefill($nimage,0,0,$blanco);
cambiar ($iinfo[2])
{
caso 1:
$imagen =imagecreatefromgif($destino);
romper;
caso 2:
$imagen =imagecreatefromjpeg($destino);
romper;
caso 3:
$imagen =imagecreatefrompng($destino);
romper;
caso 6:
$imagen =imagecreatefromwbmp($destino);
romper;
por defecto:
die("Tipo de archivo no compatible";
salida;
}
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
switch($watertype)
{
caso 1: //Agregar cadena de marca de agua
cadena de imagen($nimage,2,3,$tamaño_imagen[1]-15,$cadena de agua,$negro);
romper;
caso 2: //Agregar imagen de marca de agua
$simage1 =imagecreatefromgif("xplore.gif";
copia de imagen($nimage,$simage1,0,0,0,0,85,15);
destrucción de imágenes($simage1);
romper;
}
cambiar ($iinfo[2])
{
caso 1:
//imagegif($nimage, $destino);
imagejpeg($nimage, $destino);
romper;
caso 2:
imagejpeg($nimage, $destino);
romper;
caso 3:
imagepng($nimagen, $destino);
romper;
caso 6:
imagewbmp($nimage, $destino);
//imagejpeg($nimage, $destino);
romper;
}
//Sobrescribe el archivo cargado original
destrucción de imágenes($nimage);
destrucción de imágenes($imagen);
}
si($imgpreview==1)
{
echo "<br>Vista previa de imagen:<br>";
echo "<img src="".$destino."" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
echo " alt="Vista previa de la imagen:rNombre del archivo:".$destino."rHora de carga:">";
}
}
?>
</cuerpo>
</html>
Finalmente, creo que es necesario hablar sobre el principio de las imágenes con marcas de agua:
obtener la información del archivo cargado, crear una imagen en color verdadero, asignar una combinación de colores y rellenar la imagen.
Cree un gráfico juzgando el tipo de archivo, luego cópielo en el gráfico creado originalmente, rellénelo y cree un rectángulo, listo para escribir en imagestring() o en el
programa de imagen original para determinar el tipo de marca de agua: uno es una cadena, el el otro es Agregar un objeto gráfico en la parte superior.