function copia_imagem($dirdestino = "figuras/", $nomefinal = "") { if (!empty($_FILES['arquivo']['name'])) { //mandar arquivo para o servidor $arquivo_temporario = $_FILES["arquivo"]["tmp_name"]; // arquivo enviado pelo formulário. if(empty($nomefinal)) { $arqdestino = ajeitaURL($_FILES['arquivo']['name']); // tirar caracteres especiais. } else { $arqdestino = $nomefinal; } $destino = $dirdestino.$arqdestino; if(copy($arquivo_temporario,$destino)) {// copiando o arquivo para a pasta. return $arqdestino; } } return false; } // reduzir o tamano da imagem (largura, altura, complemento do nome, imagem, diretório destino) function geraimagem($x,$y,$sufixo,$imagem,$dirdestino) { $tipo = getimagesize($imagem); $tipo = $tipo[2]; if ($tipo==1 || $tipo==2 || $tipo==3 || $tipo==6) { if ($tipo==1) { $img_origem = imagecreatefromgif($imagem); } elseif ($tipo==6) { $img_origem = imagecreatefrombmp($imagem); } else { $img_origem = imagecreatefromjpeg($imagem); } $origem_x = imagesx($img_origem); $origem_y = imagesy($img_origem); if($origem_x > $origem_y) { $final_x = $x; $final_y = floor($x * $origem_y / $origem_x); $f_x = 0; $f_y = round(($y / 2) - ($final_y / 2)); } else { $final_x = floor($y * $origem_x / $origem_y); $final_y = $y; $f_x = round(($x / 2) - ($final_x / 2)); $f_y = 0; } $nomeorig = str_replace($dirdestino,"",$imagem); $ponto = strrpos($nomeorig,"."); $nome_raiz = substr($nomeorig,0,$ponto); if ($tipo==1) { $img_final = imagecreate($final_x,$final_y); $branco = imagecolorallocate($img_final,255,255,255); imagefill($img_final,1,1,$branco); imagecopyresized($img_final, $img_origem, 0, 0, 0, 0, $final_x, $final_y, $origem_x, $origem_y); $nomefinal = $nome_raiz."_".$sufixo.".gif"; imagegif($img_final,$dirdestino.$nomefinal); } else { $img_final = imagecreatetruecolor($final_x,$final_y); $bgc = imagecolorallocate($img_final, 255, 255, 255); imagecopyresampled($img_final, $img_origem, 0, 0, 0, 0, $final_x, $final_y, $origem_x-10, $origem_y-10); $nomefinal = $nome_raiz."_".$sufixo.".jpg"; if($tipo==6) { $nomefinal = $nome_raiz."_".$sufixo.".bmp"; } imagejpeg($img_final,$dirdestino.$nomefinal,80); } imagedestroy($img_origem); imagedestroy($img_final); return $nomefinal; } else { return false; } } function nome_img($sufixo,$nomeorig) { $nomeorig = str_replace("_mini", "", $nomeorig); $nomeorig = str_replace("_pequena", "", $nomeorig); $nomeorig = str_replace("_media", "", $nomeorig); $nomeorig = str_replace("_grande", "", $nomeorig); $ponto = strrpos($nomeorig,"."); $nomeraiz = substr($nomeorig,0,$ponto); $nomeext = substr($nomeorig,$ponto); return $nomeraiz."_".$sufixo.$nomeext; } function gera_miniatura($original, $nova_largura) { $miniatura = nome_img("mini",$original); $source = imagecreatefromstring(file_get_contents($original)); list($largura, $altura) = getimagesize($original); if ($largura>$nova_largura) { $nova_altura = ($nova_largura/$largura) * $altura; $thumb = imagecreatetruecolor($nova_largura, $nova_altura); imagecopyresampled($thumb, $source, 0, 0, 0, 0, $nova_largura, $nova_altura, $largura, $altura); imagejpeg($thumb, $miniatura, 85); } else { copy($original, $miniatura); } return $miniatura; } // o PHP não dá suporte a imagens BMP (bitmap do windows), por isso as funções ConvertBMP2GD // e imagecreatefrombmp são necessárias para tratar os arquivos .bmp na função geraimagem function ConvertBMP2GD($src, $dest = false) { if(!($src_f = fopen($src, "rb"))) { return false; } if(!($dest_f = fopen($dest, "wb"))) { return false; } $header = unpack("vtype/Vsize/v2reserved/Voffset", fread($src_f,14)); $info = unpack("Vsize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vncolor/Vimportant",fread($src_f, 40)); extract($info); extract($header); if($type != 0x4D42) { // signature "BM" return false; } $palette_size = $offset - 54; $ncolor = $palette_size / 4; $gd_header = ""; // true-color vs. palette $gd_header .= ($palette_size == 0) ? "\xFF\xFE" : "\xFF\xFF"; $gd_header .= pack("n2", $width, $height); $gd_header .= ($palette_size == 0) ? "\x01" : "\x00"; if($palette_size) { $gd_header .= pack("n", $ncolor); } // no transparency $gd_header .= "\xFF\xFF\xFF\xFF"; fwrite($dest_f, $gd_header); if($palette_size) { $palette = fread($src_f, $palette_size); $gd_palette = ""; $j = 0; while($j < $palette_size) { $b = $palette{$j++}; $g = $palette{$j++}; $r = $palette{$j++}; $a = $palette{$j++}; $gd_palette .= "$r$g$b$a"; } $gd_palette .= str_repeat("\x00\x00\x00\x00", 256 - $ncolor); fwrite($dest_f, $gd_palette); } $scan_line_size = (($bits * $width) + 7) >> 3; $scan_line_align = ($scan_line_size & 0x03) ? 4 - ($scan_line_size & 0x03) : 0; for($i = 0, $l = $height - 1; $i < $height; $i++, $l--) { // BMP stores scan lines starting from bottom fseek($src_f, $offset + (($scan_line_size + $scan_line_align) * $l)); $scan_line = fread($src_f, $scan_line_size); if($bits == 24) { $gd_scan_line = ""; $j = 0; while($j < $scan_line_size) { $b = $scan_line{$j++}; $g = $scan_line{$j++}; $r = $scan_line{$j++}; $gd_scan_line .= "\x00$r$g$b"; } } else if ($bits == 8) { $gd_scan_line = $scan_line; } else if ($bits == 4) { $gd_scan_line = ""; $j = 0; while($j < $scan_line_size) { $byte = ord($scan_line{$j++}); $p1 = chr($byte >> 4); $p2 = chr($byte & 0x0F); $gd_scan_line .= "$p1$p2"; } $gd_scan_line = substr($gd_scan_line, 0, $width); } else if($bits == 1) { $gd_scan_line = ""; $j = 0; while($j < $scan_line_size) { $byte = ord($scan_line{$j++}); $p1 = chr((int) (($byte & 0x80) != 0)); $p2 = chr((int) (($byte & 0x40) != 0)); $p3 = chr((int) (($byte & 0x20) != 0)); $p4 = chr((int) (($byte & 0x10) != 0)); $p5 = chr((int) (($byte & 0x08) != 0)); $p6 = chr((int) (($byte & 0x04) != 0)); $p7 = chr((int) (($byte & 0x02) != 0)); $p8 = chr((int) (($byte & 0x01) != 0)); $gd_scan_line .= "$p1$p2$p3$p4$p5$p6$p7$p8"; } $gd_scan_line = substr($gd_scan_line, 0, $width); } fwrite($dest_f, $gd_scan_line); } fclose($src_f); fclose($dest_f); return true; } function imagecreatefrombmp($filename) { $tmp_name = tempnam("/tmp", "GD"); if(ConvertBMP2GD($filename, $tmp_name)) { $img = imagecreatefromgd($tmp_name); unlink($tmp_name); return $img; } return false; } function moldura($arquivo,$link="") { //verifica se o nome do arquivo está em uma tag img if(strpos($arquivo, "src=")>0) { $pos_aspa1 = strpos($arquivo,"src=")+4; $aspa = substr($arquivo,$pos_aspa1,1); $pos_aspa2 = strpos($arquivo,$aspa,$pos_aspa1+1)-1; $arquivo = substr($arquivo,$pos_aspa1+1,$pos_aspa2-$pos_aspa1); } if(file_exists($arquivo)) { $tamanho = getimagesize($arquivo); $largura = $tamanho[0]; $altura = $tamanho[1]; $moldura = "
| ";
if(!empty($link)) { $moldura .= ""; }
$moldura .= " |
||