Estou fazendo um script para adicionar marca d'agua em um diretório meu.
Mas as imagens tem vários tamanhos, e além da marca, preciso adicionar uma borda, então estou fazendo assim:
Crio um bg de tamanho fixo, pego a imagem e redimensiono para que se encaixe nesse bg, adiciono a imagem ao bg e depois a marca em cima da imagem(isso teóricamente).
Mas o problema é que a função imagecopymerge precisa que a imagem venha direto de um diretório, mas como antes de joga-la no bg em tenho que redimensionar, da um erro dizendo que a imagem não é válida, isso porque está vindo de uma imagecopyresampled().
PHP:
<?php
//header('Content-Type: image/jpeg');
//propriedades gerais
$width = 900;
$height = 800;
$dir = 'vertical';
$imagem = imagecreatetruecolor($width, $height);
//desenha o fundo
//Valores iniciais R G B
$i_r = 255;
$i_g = 0;
$i_b = 0;
//Valores finais R G B
$f_r = 0;
$f_g = 255;
$f_b = 0;
//direfença de RED inicial - RED final
$d_r = $i_r-$f_r;
//diferença de GREEN inicial - GREEN final
$d_g = $i_g-$f_g;
//diferença de BLUE inicial - BLUE final
$d_b = $i_b-$f_b;
if($dir == 'vertical'){
//quantidade de pixel a diminuir por cor RED
$q_r = $d_r/$width;
//quantidade de pixel a diminuir por cor GREEN
$q_g = $d_g/$width;
//quantidade de pixel a diminuir por cor BULE
$q_b = $d_b/$width;
for($i = 0; $i < $height; $i++){
for($j = 0; $j < $width; $j++){
$cor = imagecolorallocate($imagem, $i_r-($q_r*$j), $i_g-($q_g*$j), $i_b-($q_b*$j));
imagesetpixel($imagem, $j, $i, $cor);
}
}
}elseif($dir == 'horizontal'){
//quantidade de pixel a diminuir por cor RED
$q_r = $d_r/$height;
//quantidade de pixel a diminuir por cor GREEN
$q_g = $d_g/$height;
//quantidade de pixel a diminuir por cor BULE
$q_b = $d_b/$height;
for($i = 0; $i < $width; $i++){
for($j = 0; $j < $height; $j++){
$cor = imagecolorallocate($imagem, $i_r-($q_r*$j), $i_g-($q_g*$j), $i_b-($q_b*$j));
imagesetpixel($imagem, $i, $j, $cor);
}
}
}else{
exit(0);
}
//fim do fundo
//propriedades da marca
$image[0]['url'] = 'images/02.jpg';
$image[0]['create'] = imagecreatefromjpeg($image[0]['url']);
list($image[0]['width'], $image[0]['height']) = getimagesize($image[0]['url']);
//propriedades da imagem
$image[1]['url'] = 'images/01.jpg';
list($image[1]['width'], $image[1]['height']) = getimagesize($image[1]['url']);
$image[1]['ctc'] = imagecreatetruecolor($width, $height);
$image[1]['cij'] = imagecreatefromjpeg($image[1]['url']);
$image[1]['create'] = imagecopyresampled($image[1]['ctc'], $image[1]['cij'], 0, 0, 0, 0, $width-20, $height-20, $image[1]['width'], $image[1]['height']);
imagecopymerge($imagem, $image[1]['create'], 10, 10, 0, 0, $image[1]['width'], $image[1]['height'], 80);
imagecopymerge($imagem, $image[0]['create'], ceil($image[1]['width'] - $image[0]['width'] -10), ($image[1]['height'] - $image[0]['height'] - 10), 0, 0, $image[0]['width'], $image[0]['height'], 80);
imagejpeg($imagem, null, 100);
imagedestroy($imagem);
?>
Erro:
Warning: imagecopymerge(): supplied argument is not a valid Image resource in C:\wamp\www\ci\marca.php on line 84
Pergunta
vini_loock
Iai galera! como vai?
Estou fazendo um script para adicionar marca d'agua em um diretório meu.
Mas as imagens tem vários tamanhos, e além da marca, preciso adicionar uma borda, então estou fazendo assim:
Crio um bg de tamanho fixo, pego a imagem e redimensiono para que se encaixe nesse bg, adiciono a imagem ao bg e depois a marca em cima da imagem(isso teóricamente).
Mas o problema é que a função imagecopymerge precisa que a imagem venha direto de um diretório, mas como antes de joga-la no bg em tenho que redimensionar, da um erro dizendo que a imagem não é válida, isso porque está vindo de uma imagecopyresampled().
PHP:
Erro: linha 84: Editado por vini_loockLink para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.