Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
pessoal, tou querendo fazer o seguinte:
O usuario faz upload da foto dele, e o script coloca uma imagem por cima da foto que fez o upload.
Alguem sabe como fazer isso?
desde ja agradeço!
Olá, wolfphw, obrigado por ajudar...
coloquei um codigo anterior, mas tava errado!
achei este mas ta com erro =\
<?php
/// UPLOAD
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$tmp = getmicrotime();
$campo = 'foto'; /// no do campo file.
if($_FILES[$campo][name]) {
$file = $_FILES[$campo];
$ext = substr($file[name],strrpos($file[name],"."));
$$campo = "$tmp-$campo$ext";
/// TAMANHO DO THUMB >> se a imagem é grande vai ser reduzida.
$aprox = "600";
$filename = $_FILES[$campo][tmp_name];
list($width, $height, $type, $attr) = getimagesize($filename);
$x= $width;
$y= $height;
// Aqui é feito um cálculo para aproximar o tamanho da imagem ao valor passado em $aprox.
// Nao importa se a foto for grande ou pequena, o thumb de todas elas será mais ou menos do
// mesmo tamanho.
if ($x >= $y)
{
if ($x > $aprox)
{
$x1= (int)($x * ($aprox/$x));
$y1= (int)($y * ($aprox/$x));
}
// incluido o else abaixo. Caso a imagem seja menor do que
// deve ser aproximado, mantém tamanho original para o thumb.
else
{
$x1= $x;
$y1= $y;
}
}
else
{
if ($y > $aprox)
{
$x1= (int)($x * ($aprox/$y));
$y1= (int)($y * ($aprox/$y));
}
// incluido o else abaixo. Caso a imagem seja menor do que
// deve ser aproximado, mantém tamanho original para o thumb.
else
{
$x1= $x;
$y1= $y;
}
}
$x= $x1;
$y= $y1;
$thumb_x = $x; //Largura da thumb
$thumb_y = $y; //Altura da thumb
$quality = 100; //Qualidade
// Deixe essa parte como está
if (function_exists('imagecreatetruecolor')) {
$thumbnail = imagecreatetruecolor($thumb_x, $thumb_y); } else { echo "GD2 nao disponível"; exit; }
// VERIFICA SE É PNG OU OU JPEG
if(substr($campo,-4) == ".png") {
$originalimage = imagecreatefrompng($filename); } else {
$originalimage = imagecreatefromjpeg($filename); }
#dados da mascara [caminho do arquivo que serve de mascara] em jpeg no caso
$marca = "marca-dagua.jpg"; // 150 x 65
$imagem_marca = imagecreatefromjpeg($marca);
$pontoX1 = imagesx($imagem_marca);
$pontoY1 = imagesy($imagem_marca);
#Habilitando a opcao abaixo irá criar a mascara com a imagem marca d'agua
// $thumb_x-160, $thumb_y-75 >>> no caso é o tamanho da imagem original menos o tamanho da mascada menos 10 de espaçamento, ou seja, se a marcara for maior estes tamanhos também devem ser maiores.
imagecopyresampled($thumbnail, $originalimage, 0, 0, 0, 0, $thumb_x, $thumb_y, imagesx($originalimage), imagesy($originalimage));
imagecopymerge($thumbnail, $imagem_marca, $thumb_x-160, $thumb_y-75, 0, 0, $pontoX1, $pontoY1, 80); // final é transparencia
// imagecopyresized($thumbnail, $originalimage, 0, 0, 0, 0, $thumb_x, $thumb_y, imagesx($originalimage),imagesy($originalimage)); // sem marca d'agua no caso comentar as duas linhas de cima.
imagejpeg($thumbnail,"../galerias/".$$campo,$quality); // pasta para onde vai a imagem.
}
?>
<form id="form1" name="form1" enctype="multipart/form-data" method="post" action="">
<input type="file" name="foto" id="foto" />
<input type="submit" name="button" id="button" value="Enviar" />
</form>Uma outra classe que é bastante útil para manipular imagens e usar marca d'agua é o easyphpthumbnail .
Olha essa biblioteca.. vai fazer oqu evc quer
http://wideimage.sourceforge.net/examples/merge-watermark/
http://wideimage.sourceforge.net/wp-content/current/demo/index.php?demo=merge&output=preset%20for%20demo&colors=255&dither=1&match_palette=1 <- Exemplo online