Redimensionando fotos automaticamente
Queridos, eu de novo aqui.
Quase todos os meus problemas já foram resolvidos, falta pouco,
Tenho o código abaixo, no caso específico da foto, ele verifica o tamanho e diz que não é válido o tamanho, porém as vezes você tenta inserir a foto ela da o aviso mais simplesmente exclui a foto que estava lá. Além do que em um cadastro de cliente ficar redimensionado foto é chato.
Queria saber se tem como em vez dele dar o aviso, ele redimensionar uma foto para uma tamanho padrão quando eu fizer o upload.
Abaixo o código:
// Conexão com o banco de dados
include "dbconfig.php";
if ($_POST['enviar'] == 1) {
// Recupera os dados dos campos
// Recupera os dados dos campos
$id_cliente = $_POST['id_cliente'];
$foto = $_FILES["foto"];
// Se a foto estiver sido selecionada
if (!empty($foto["name"])) {
// Largura máxima em pixels
$largura = 150;
// Altura máxima em pixels
$altura = 180;
// Tamanho máximo do arquivo em bytes
$tamanho = 1000;
// Verifica se o arquivo é uma imagem
if(!@eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto["type"])){
$error[1] = "Isso não é uma imagem.";
}
// Pega as dimensões da imagem
$dimensoes = getimagesize($foto["tmp_name"]);
// Verifica se a largura da imagem é maior que a largura permitida
if($dimensoes[0] > $largura) {
$error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels";
}
// Verifica se a altura da imagem é maior que a altura permitida
if($dimensoes[1] > $altura) {
$error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels";
}
// Verifica se o tamanho da imagem é maior que o tamanho permitido
if($arquivo["size"] > $tamanho) {
$error[4] = "A imagem deve ter no máximo ".$tamanho." bytes";
}
// Se não houver nenhum erro
if (count($error) == 0) {
// Pega extensão da imagem
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto["name"], $ext);
// Gera um nome único para a imagem
$nome_imagem = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde ficará a imagem
$caminho_imagem = "fotos/" . $nome_imagem;
// Faz o upload da imagem para seu respectivo caminho
move_uploaded_file($foto["tmp_name"], $caminho_imagem);
}
}
// Se o usuário clicou no botão cadastrar efetua as ações
if ($_POST['cadastrar']) {
// Insere os dados no banco
$sql = mysql_query("INSERT INTO clientes VALUES ('', '".$nome_imagem."')");
// Se os dados forem inseridos com sucesso
if (mysql_affected_rows() > 0){
echo "Cliente cadastrado com sucesso.";
}
else{
echo "Erro ao cadastrar.";
}
}
Então queridos. peguei esse código na net.
O arquivo index:
<?php
include_once ("funcao/Redimensiona.php");
if (isset($_POST['acao']) && $_POST['acao']=="cadastrar"){
$foto = $_FILES['foto'];
$redim = new Redimensiona();
$src=$redim->Redimensionar($foto, 150, "images");
}
?>
<html>
<head>
<title>Teste</title>
</head>
<body>
<form method="post" action="" enctype="multipart/form-data">
<label>Foto <input type="file" name="foto" /></label>
<input type="submit" value="Enviar" />
<input type="hidden" name="acao" value="cadastrar" />
</form>
<?php
if (isset($_POST['acao']) && $_POST['acao']=="cadastrar"){
echo "<img src=\"$src\">";
}
?>
</body>
</html>
E o arquivo Redimensiona
<?php
class Redimensiona{
public function Redimensionar($imagem, $largura, $pasta){
$name = md5(uniqid(rand(),true));
if ($imagem['type']=="image/jpeg"){
$img = imagecreatefromjpeg($imagem['tmp_name']);
}else if ($imagem['type']=="image/gif"){
$img = imagecreatefromgif($imagem['tmp_name']);
}else if ($imagem['type']=="image/png"){
$img = imagecreatefrompng($imagem['tmp_name']);
}
$x = imagesx($img);
$y = imagesy($img);
$autura = ($largura * $y)/$x;
$nova = imagecreatetruecolor($largura, $autura);
imagecopyresampled($nova, $img, 0, 0, 0, 0, $largura, $autura, $x, $y);
if ($imagem['type']=="image/jpeg"){
$local="$pasta/$name".".jpg";
imagejpeg($nova, $local);
}else if ($imagem['type']=="image/gif"){
$local="$pasta/$name".".gif";
imagejpeg($nova, $local);
}else if ($imagem['type']=="image/png"){
$local="$pasta/$name".".png";
imagejpeg($nova, $local);
}
imagedestroy($img);
imagedestroy($nova);
return $local;
}
}
?>
Adaptei tranquilamente ao meu código, mas quem quiser testar pode ver que ele só ajusta a largura e não a altura.
Teria como fazer ele redimensionar tanto na largura quanto na altura?
Quem puder testar e me da uma ajuda agradeço. segue o exemplo em anexo.
https://onedrive.live.com/redir?resid=8D03EFD53FA8E739!112&authkey=!AIvyqCGt4dNW1d0&ithint=file,.zip
Poxa, ninguém da uma luz?
Discussão (23)
Carregando comentários...