Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Script para inserir marca d'água na imagem
<?php
/**
* Verifica se é um resource identificador da imagem
* @param resource $image O identificador da imagem
* @return void
*/
function error_image( $image )
{
if( ! is_resource( $image ) )
{
trigger_error( sprintf( '%s is not an image resource identifier!', $image ), E_USER_ERROR );
}
}error_image( $image );
$x = ( is_numeric( $x ) ) ? ( int ) $x : ( string ) $x;
$y = ( is_numeric( $y ) ) ? ( int ) $y : ( string ) $y;
$trans = ( int ) $trans;
switch( strtolower( pathinfo( $watermark, PATHINFO_EXTENSION ) ) )
{
case( 'jpg' ):
case( 'jpeg' ):
$watermark = imagecreatefromjpeg( $watermark );
break;$watermark = imagecreatefrompng( $watermark );
break;$watermark = imagecreatefromgif( $watermark );
break;$watermark = imagecreatefrombmp( $watermark );
break;trigger_error( 'Invalid watermark file', E_USER_ERROR );
}
$watermark_width = imagesx( $watermark );
$watermark_height = imagesy( $watermark );
if( is_string( $x ) and is_string( $y ) )
{
$image_width = imagesx( $image );
$image_height = imagesy( $image );
switch( strtoupper( sprintf( '%s-%s', $x, $y ) ) )
{
case( 'TOP-LEFT' ):
$x = 0;
$y = 0;
break;$x = ( ( $image_width - $watermark_width ) / 2 );
$y = 0;
break;$x = ( $image_width - $watermark_width );
$y = 0;
break;$x = 0;
$y = ( ( $image_height / 2 ) - ( $watermark_height / 2 ) );
break;$x = ( ( $image_width - $watermark_width ) / 2 );
$y = ( ( $image_height / 2 ) - ( $watermark_height / 2 ) );
break;$x = ( $image_width - $watermark_width );
$y = ( ( $image_height / 2) - ( $watermark_height / 2 ) );
break;$x = 0;
$y = ( $image_height - $watermark_height );
break;$x = ( ( $image_width - $watermark_width ) / 2 );
$y = ( $image_height - $watermark_height );
break;$x = ( $image_width - $watermark_width );
$y = ( $image_height - $watermark_height );
break;$x = 0;
$y = 0;
break;
}
}
$x = ( int ) $x;
$y = ( int ) $y;
switch( $trans )
{
case( ( $trans >= 0 ) and ( $trans <= 100 ) ):
imagecopymerge( $image, $watermark, $x, $y, 0, 0, $watermark_width, $watermark_height, $trans );
break;imagecopy( $image, $watermark, $x, $y, 0, 0, $watermark_width, $watermark_height );
break;
}
return $image;
}
?>
Teste:
<?php
$image = watermark( imagecreatefromjpeg( 'Chibi_Kakashi.jpg' ), 'title.png', 10, 100, 80 );
// ou
//$image = watermark( imagecreatefromjpeg( 'Chibi_Kakashi.jpg' ), 'title.png', 'MIDDLE', 'CENTER' );
header( 'Content-type: image/jpg' );
imagejpeg( $image, null, 100 );
imagedestroy( $image );
exit;
?>
Outra coisa, essas funções vão te retornar apenas o resource, se você quiser salvar a imagem alterada vai ter que usar:
/applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/seta.gif&key=e2d72b30771339c36df1f88688ecc571784dab60a19e2c7c2ff398c277802ac0" alt="seta.gif" />imagejpeg
/applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/seta.gif&key=e2d72b30771339c36df1f88688ecc571784dab60a19e2c7c2ff398c277802ac0" alt="seta.gif" />imagepng
/applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/seta.gif&key=e2d72b30771339c36df1f88688ecc571784dab60a19e2c7c2ff398c277802ac0" alt="seta.gif" />imagegif
Exemplo de uso:
<?php
$image = watermark( imagecreatefromjpeg( 'Chibi_Kakashi.jpg' ), 'title.png', 10, 100, 80 );
imagejpeg( $image, 'caminho/nome_da_imagem.jpg', 100 );
?>
That's all folks! /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/laugh.gif&key=fb9a849ac525d2fd317adad061adf02e38bd5f5cb2c664d803c1667dd70a2af1" alt="laugh.gif" />
Obrigado! Que bom que este post vai ser de ajuda para a comunidade. :thumbsup:
Uma coisa verdadeira é que, se essa função e as outras dos outros posts tivesses algum erro, podes ter certeza que teriamos vários comentários (reclamando/tentando corrigir). <_<
Mas o importante é compartilhar sem esperar nada em troca. :grin:
Pior que sim, infelizmente muitas pessoas só fazem críticas e só comentam quando tem erros no algorítmo. E eu errei, não tem classes, apenas funções, mas não importa, o importante foi sua contribuição!
:thumbsup:
Poxa cara, show demais suas classes de manipulação de imagens! Agradeço muito por compartilhar, uma pena que ninguém comentou outros tópicos, mas este aqui servirá para todos os outros dessa categorie, meus parabéns!