Se você conhece a biblioteca GD do PHP, não é nada difícil entender este artigo!
<?php
/********************************************** ***** *******************************
Descrição do parâmetro:
$max_file_size: limite de tamanho do arquivo de upload, unidade BYTE
$destination_folder: Caminho do arquivo de upload
$ marca d'água: se deseja adicionar uma marca d'água (1 significa adicionar marca d'água, outros significa não adicionar marca d'água
Instruções de uso):
1. Remova o sinal ; da frente da linha "extension=php_gd2.dll" no arquivo PHP.INI, pois precisamos utilizar a biblioteca GD;
2. Altere extension_dir = para o diretório onde seu php_gd2.dll está localizado;
************************************************** * ******************************/
//Carregar lista de tipos de arquivo
$uptypes=array(
'imagem/jpg',
'imagem/jpeg',
'imagem/png',
'imagem/pjpeg',
'imagem/gif',
'imagem/bmp',
'imagem/x-png'
);
$max_file_size=2000000; //Limite de tamanho do arquivo de upload, unidade BYTE
$destination_folder="uploadimg/"; //Carregar caminho do arquivo
$watermark=1; //Se deve adicionar uma marca d'água (1 significa adicionar marca d'água, outros significa não adicionar marca d'água);
$watertype=1; //Tipo de marca d'água (1 é texto, 2 é imagem)
$waterposition=1; //Posição da marca d'água (1 é o canto inferior esquerdo, 2 é o canto inferior direito, 3 é o canto superior esquerdo, 4 é o canto superior direito, 5 está no centro);
$waterstring=" http://www.xplore.cn/ ";/string de marca d'água
$waterimg="xplore.gif"; //imagem de marca d'água
$imgpreview=1; //Se deve gerar uma imagem de visualização (1 significa gerada, outras não geram);
$imgpreviewsize=1/2; //Proporção da miniatura
?>
<html>
<cabeça>
<title>Programa de upload de imagens ZwellL</title>
<style type="texto/css">
<!--
corpo
{
tamanho da fonte: 9pt;
}
entrada
{
cor de fundo: #66CCFF;
borda: inserção de 1px #CCCCCC;
}
-->
</estilo>
</head>
<corpo>
<form enctype="multipart/form-data" método="post" name="upform">
Carregar arquivos:
<input name="upfile" type="arquivo">
<input type="submit" value="Upload"><br>
Os tipos de arquivos permitidos para upload são:<?=implode(', ',$uptypes)?>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!is_uploaded_file($_FILES["upfile"][tmp_name]))
//O arquivo existe?
{
echo "A imagem não existe!";
saída;
}
$arquivo = $_FILES["arquivo"];
if($max_file_size < $arquivo["tamanho"])
//verifica o tamanho do arquivo
{
echo "O arquivo é muito grande!";
saída;
}
if(!in_array($arquivo["tipo"], $uptypes))
//verifica o tipo de arquivo
{
echo "O tipo de arquivo não corresponde!".$file["type"];
saída;
}
if(!file_exists($destination_folder))
{
mkdir($pasta_destino);
}
$nomedoarquivo=$arquivo["tmp_name"];
$image_size = getimagesize($nomedoarquivo);
$pinfo=pathinfo($arquivo["nome"]);
$ftype=$pinfo['extensão'];
$destino = $destination_folder.time().".".$ftype;
if (file_exists($destino) && $overwrite!=verdadeiro)
{
echo "O arquivo com o mesmo nome já existe";
saída;
}
if(!move_uploaded_file ($nome do arquivo, $destino))
{
echo "Erro ao mover arquivo";
saída;
}
$pinfo=pathinfo($destino);
$fnome=$pinfo[nomebase];
echo " <font color=red>Enviado com sucesso</font><br>Nome do arquivo: <font color=blue>".$destination_folder.$fname."</font><br>";
echo "Largura:".$image_size[0];
echo "comprimento:".$image_size[1];
echo "<br> tamanho:".$arquivo["tamanho"]." bytes"
;
{
$iinfo=getimagesize($destino,$iinfo);
$nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
$branco=imagecolorallocate($nimage,255.255.255);
$preto=imagecolorallocate($nimage,0,0,0);
$red=imagecolorallocate($nimage,255,0,0);
imagefill($imagem,0,0,$branco);
mudar ($iinfo[2])
{
caso 1:
$simage =imagecreatefromgif($destination);
quebrar;
caso 2:
$simage =imagecreatefromjpeg($destination);
quebrar;
caso 3:
$simage =imagecreatefrompng($destination);
quebrar;
caso 6:
$simage =imagecreatefromwbmp($destination);
quebrar;
padrão:
die("Tipo de arquivo não suportado";
saída;
}
imagemcópia($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white)
;
{
case 1: //Adiciona string de marca d'água
imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$preto);
quebrar;
caso 2: //Adicionar imagem de marca d'água
$simage1 =imagecreatefromgif("xplore.gif";
cópia de imagem($nimagem,$imagem1,0,0,0,0,85,15);
destruição de imagem($imagem1);
quebrar;
}
switch ($iinfo[2])
{
caso 1:
//imagegif($nimage, $destino);
imagemjpeg($nimage, $destino);
quebrar;
caso 2:
imagemjpeg($nimage, $destino);
quebrar;
caso 3:
imagempng($imagem, $destino);
quebrar;
caso 6:
imagemwbmp($nimage, $destino);
//imagejpeg($nimage, $destino);
quebrar;
}
//Substitui o arquivo original enviado
destruição de imagem($nimage);
destruição de imagem($imagem);
}
if($imgpreview==1)
{
echo "<br>Visualização da imagem:<br>";
echo "<img src="".$destination."" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
echo " alt="Visualização da imagem:rNome do arquivo:".$destino."rTempo de upload:">";
}
}
?>
</body>
</html>
Por fim, acho necessário falar sobre o princípio da marca d’água nas imagens:
obter as informações do arquivo carregado, criar uma imagem em cores reais, atribuir um esquema de cores e preencher a imagem.
Crie um gráfico julgando o tipo de arquivo, depois copie-o para o gráfico originalmente criado, preencha e crie um retângulo, pronto para ser gravado em imagestring() ou no
programa de imagem original para determinar o tipo de marca d’água: um é uma string, o a outra é Adicionar um objeto gráfico na parte superior.