Salve salve rapaziada, como o próprio título diz, segue os códigos em 3 arquivos comentados, utilizando PDO no PHP para tal façanha, eu iria fazer um vídeo-tutorial, mas no final todo mundo pede pra disponibilizar o código então segue-os em 3 arquivos.
<?php
/* servirá pra incluir o arquivo Conexao.class.php, se houvessem vários com *.class.php,
* incluiria todos sem precisar fazer 1 por 1 */
function __autoload ( $class ){
require_once $class . '.class' . '.php' ;
}
/* Classe se chama Redimensionar, porém fará mais que isso */
class Redimensionar {
/* propriedades da classe */
public $permitido = array ( 'image/jpg' , 'image/jpeg' , 'image/png' );
public $meth ;
public $nm ;
/* carregará automaticamente a conexao, ao instancia a classe e armazenará na propriedade $meth */
function __construct (){
/* já incluida pelo autoload, instaciamos e armazenamos em meth */
$Conexao = new Conexao ();
$this -> meth = $Conexao -> conectar ();
}
/* caso a imagem não seja caregada */
function exibe (){
echo '
<script type="text/javascript">alert("Informe a imagem");</script>
' ;
}
/* Método responsável pelo redimensionamento */
function redimensiona ( $tmp , $nome , $largura , $type , $marca = FALSE ){
/* se a extensão não estiver entre as permitidas da propriedade $permitido, não entrará nesse bloco */
if ( in_array ( $type , $this -> permitido )){
/* além de criar a pasta devemos chamar o nome dela */
$pasta = 'uploads' ;
/* se for jpg, JPG, jpeg ou JPEG, usaremos a função: imagecreatefromjpeg() */
if (( strtolower ( substr ( $nome , - 4 )) == '.jpg' ) || strtolower ( substr ( $nome , - 5 )) == '.jpeg' ){
$img = imagecreatefromjpeg ( $tmp );
$ext = 'jpg' ;
/* damos o nome sem mexer na extensão */
if (( substr ( $nome , - 5 ) == '.jpeg' ) || substr ( $nome , - 5 ) == '.JPEG' ){
$nome = 'mp' . str_shuffle ( substr ( base64_encode ( $nome ), 0 , 10 )) . rand ( 0 , 888 ) . substr ( $nome , - 5 );
} else {
$nome = 'mp' . str_shuffle ( substr ( base64_encode ( $nome ), 0 , 10 )) . rand ( 0 , 888 ) . substr ( $nome , - 4 );
}
/* se for png ou PNG, usaremos a função: imagecreatefrompng() */
} elseif (( strtolower ( substr ( $nome , - 4 )) == '.jpg' )){
$img = imagecreatefrompng ( $tmp );
$ext = 'png' ;
$nome = 'mp' . str_shuffle ( substr ( base64_encode ( $nome ), 0 , 10 )) . rand ( 0 , 888 ) . substr ( $nome , - 4 );
}
/* pegamos as dimensões da imagem carregada do X e Y */
$x = imagesx ( $img );
$y = imagesy ( $img );
/* definimos a nova altura, baseada no produto da larguraNova pela larguraVelha dividida pela alturaVelha */
$altura = ( $largura * $y ) / $x ;
/* criamos a nova imagem baseada nesses dados */
$nova = imagecreatetruecolor ( $largura , $altura );
/* bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y ,
* int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h ) */
imagecopyresampled ( $nova , $img , 0 , 0 , 0 , 0 , $largura , $altura , $x , $y );
/* mesma coisa se for jpg ou png usaremos funções diferentes */
if ( $ext == 'jpg' ){
if ( imagejpeg ( $nova , " $pasta / $nome " )){
echo "Redimensionada com sucesso!<br />" ;
}
} elseif ( $ext == 'png' ){
if ( imagepng ( $nova , " $pasta / $nome " )){
echo "Redimensionada com sucesso!<br />" ;
}
}
/* se o checkbox marca dagua foi marcado, chamaremos o método para inserir a marca dagua */
if ( $marca == TRUE ){
$this -> marca ( $nova , $nome , $pasta , $img , $ext );
/* se não, só gravamos no banco e destruimos a imagem velha e nova */
} else {
$this -> gravar ( $nome );
imagedestroy ( $nova );
imagedestroy ( $img );
}
/* caso seja enviado um arquivo com extensão diferente das permitidas */
} else {
echo "Tipo não permitido." ;
}
}
/* inserir marca dagua */
function marca ( $nova , $nome , $pasta , $img , $ext ){
/* criamos a imagem baseada numa imagem com a marca */
$marca = imagecreatefrompng ( 'marca.jpg' );
$marcax = imagesx ( $marca );
$marcay = imagesy ( $marca );
imagecopyresampled ( $nova , $marca , 0 , 0 , 0 , 0 , 232 , 47 , $marcax , $marcay );
/* se anova imagem for jpg ou png, novamente definiremos as funçoes */
if ( $ext == 'png' ){
if ( imagepng ( $nova , " $pasta / $nome " )){
echo "Marca D'agua inserida com sucesso" ;
}
}
if ( $ext == 'jpg' ){
if ( imagejpeg ( $nova , " $pasta / $nome " )){
echo "Marca D'agua inserida com sucesso" ;
}
}
/* armazenamos o nome na propriedade $nm e depois mandamos gravar no banco, pois ainda não gravamos, só seria gravado
* se não pedisse marca dagua também */
$this -> nm = $nome ;
$this -> gravar ( $nome );
/* depois disso destruimos */
imagedestroy ( $nova );
imagedestroy ( $img );
}
/* gravamos na tabela do mysql para recuperamos dinamicamento o nome */
function gravar ( $nome ){
$metodo = $this -> meth ;
$sql = "INSERT INTO `img` SET `arquivo`=?" ;
$query = $metodo -> prepare ( $sql );
if ( $query -> execute ( array ( $nome ))){
echo "<br />Gravado no banco com sucesso!" ;
}
}
}
?>