/var/www/vhosts/sivana.com.br/httpdocs/admin/upload.class.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php 


class Upload
    private 
$arquivo;
    private 
$altura
    private 
$largura
    private 
$pasta
    
    function 
__construct($arquivo$altura$largura$pasta){ 
        
$this->arquivo $arquivo
        
$this->altura $altura;
        
$this->largura $largura
        
$this->pasta $pasta
    } 
    
    private function 
getExtensao(){ 
    
//retorna a extensao da imagem    
        
return $extensao strtolower(end(explode('.'$this->arquivo['name']))); 
    }
    
    private function 
ehImagem($extensao){ 
        
$extensoes = array('gif''jpeg''jpg''png');    // extensoes permitidas
         
if (in_array($extensao$extensoes)) 
            return 
true;    
     } 
     
     
//largura, altura, tipo, localizacao da imagem original 
    
private function redimensionar($imgLarg$imgAlt$tipo$img_localizacao){
     
//descobrir novo tamanho sem perder a proporcao 
     
if ( $imgLarg $imgAlt ){ 
         
$novaLarg $this->largura
        
$novaAlt round( ($novaLarg $imgLarg) * $imgAlt ); 
     } elseif ( 
$imgAlt $imgLarg ){     
         
$novaAlt $this->altura
        
$novaLarg round( ($novaAlt $imgAlt) * $imgLarg ); 
    } else 
// altura == largura 
        
$novaAltura $novaLargura max($this->largura$this->altura);
        
    
//redimencionar a imagem 
    
    //cria uma nova imagem com o novo tamanho    
    
$novaimagem imagecreatetruecolor($novaLarg$novaAlt); 
    
    switch (
$tipo){ 
            case 
1:    // gif 
                    
$origem imagecreatefromgif($img_localizacao); 
                    
imagecopyresampled($novaimagem$origem0000$novaLarg$novaAlt$imgLarg$imgAlt); 
                    
imagegif($novaimagem$img_localizacao); 
                    break; 
            case 
2:    // jpg 
                    
$origem imagecreatefromjpeg($img_localizacao); 
                    
imagecopyresampled($novaimagem$origem0000$novaLarg$novaAlt$imgLarg$imgAlt); 
                    
imagejpeg($novaimagem$img_localizacao);
                    break; 
            case 
3:    // png 
                    
$origem imagecreatefrompng($img_localizacao);
                    
                    
imagealphablending($novaimagemfalse);
                    
$colorTransparent imagecolorallocatealpha($novaimagem000127);
                    
imagefill($novaimagem00$colorTransparent);
                    
imagesavealpha($novaimagemtrue);
                    
imagecopyresampled($novaimagem$origem0000$novaLarg$novaAlt$imgLarg$imgAlt);
                    
imagepng($novaimagem$img_localizacao); 
                    break; 
        } 
    
        
//destroi as imagens criadas 
        
imagedestroy($novaimagem); 
        
imagedestroy($origem); 
    } 
    
    public function 
salvar(){    
        
        
$extensao $this->getExtensao(); 
        
$n_im$this->arquivo['name'];
        
$nome_img preg_replace('/\.[^.]*$/'''$n_im); 
        
        
$nomelimpo2 strtolowerpreg_replace("/[^A-Za-z0-9_]/""-"strtr(trim($nome_img), ("áàãâéêíóôõúüñçÁÀÃÂÉÊÍÓÔÕÚÜÑÇ"),"aaaaeeiooouuncAAAAEEIOOOUUNC-")) );
        
        
//gera um nome unico para a imagem em funcao do tempo 
        
$novo_nome $nomelimpo2.'-'.time() . '.' $extensao
            
        
//localizacao do arquivo 
        
$destino $this->pasta $novo_nome;
        
         
//move o arquivo 
         
         
if (!move_uploaded_file($this->arquivo['tmp_name'], $destino)){ 
                 if (
$this->arquivo['error'] == 1
                    return 
"Tamanho excede o permitido"
                else
                     return 
"Erro " $this->arquivo['error']; 
        } 
        
        if (
$this->ehImagem($extensao)){    
            
//pega a largura, altura, tipo e atributo da imagem 
            
list($largura$altura$tipo$atributo) = getimagesize($destino);
            
            
// testa se é preciso redimensionar a imagem 
            
if(($largura $this->largura) || ($altura $this->altura))
                 
$this->redimensionar($largura$altura$tipo$destino);
            } 
            
    return 
$novo_nome
    
    }    
    

?>