Convert image size before saving to BD

Asked

Viewed 908 times

0

I would like to increase my processing code:

// Local onde imagem vai ser salva
$_UP['pasta'] = '../../media/';
// Tamanho da imagem
$_UP['tamanho'] = 1024*250; // 250Kb
// Exrensões permitidas
$_UP['extensoes'] = array('png', 'jpg', 'jpeg', 'gif');
// Renomear a imagem
$_UP['renomear'] = false;

// Tipos de erro de UpLoad do PHP
$_UP['erros'][0] = 'Não houve erro';
$_UP['erros'][1] = 'Imagem maior que o limite do php';
$_UP['erros'][2] = 'Imagem muito grande';
$_UP['erros'][3] = 'UpLoad da imagem feita parcialmente';
$_UP['erros'][4] = 'Erro no UpLoad da imagem';

// Verifica se houve algum erro
if($_FILES['imagem']['erros'] != 0){
    die("Não foi possivel fazer UpLoad, Erro: <br />". $_UP['erros'][$_FILES['imagem']['erros']]);
exit;
}

// Verifica qual a extensão
$img_nome = $_FILES['imagem']['name'];
$img_separador = explode('.', $img_nome);
$extensao = strtolower(end($img_separador));
//$extensao = strtolower(end(explode('.', $_FILES['imagem']['name'])));
if(array_search($extensao, $_UP['extensoes'])=== false){
    echo "
    <script type=\"text/javascript\">
        alert(\"Arquivo não compatível: png, jpg, jpeg e gif. \");
    </script>
    ";
}
// Verifica o tamanho
else if ($_UP['tamanho'] < $_FILES['imagem']['size']){
    echo "Imagem muito grande, limite de 250Kb";
}
// Salva nos arquivos do site
else{
    //Verifica se deve trocar o nome da imagem
if($_UP['renomear'] == true){
    // Cria nome Baseado no UNIX TIMESTAMP atual e com extensão
    $nome_final = time().'.jpg';
}else{
    // Mantem o nome da imagem
    $nome_final = $_FILES['imagem']['name'];
}
// Verifica se é possivel mover a imagem para a pasta escolhida
    if(move_uploaded_file($_FILES['imagem']['tmp_name'], $_UP['pasta'].$nome_final)){
    // Upload efetuado com sucesso
    $nome = $conectar->real_escape_string($nome);
    $desc = $conectar->real_escape_string($desc);
    $description = $conectar->real_escape_string($description);
    $tempo = $conectar->real_escape_string($tempo);
    $link = $conectar->real_escape_string($link);

    $query = mysqli_query($conectar, "INSERT INTO ...") or die(mysqli_error($conectar));
    $query_vist = mysqli_query($conectar, "INSERT INTO contador (nomePagina, visitas) VALUES ('".$1."', '".$quant."')") or die(mysqli_error($conectar));
    echo "<META HTTP-EQUIV=REFRESH CONTENT = '0;URL=#'>
<script type=\"text/javascript\">
    alert(\"Cadastrado com Sucesso.\");
</script>
";
}

It just checks, does it have any way to convert the user sent image to 500x500px? So I can keep a pattern in the project. Could someone show an example of how to implement using my code?

  • This link has several options https://stackoverflow.com/questions/14649645/resize-image-in-php

1 answer

-1

To work with images in PHP is easier to use external resources, I suggest using GD or of Imagemagick, in GD it is quite easy to do this:

function resize_image($file, $w, $h, $crop=FALSE) {
    list($width, $height) = getimagesize($file);
    $r = $width / $height;
    if ($crop) {
        if ($width > $height) {
            $width = ceil($width-($width*abs($r-$w/$h)));
        } else {
            $height = ceil($height-($height*abs($r-$w/$h)));
        }
        $newwidth = $w;
        $newheight = $h;
    } else {
        if ($w/$h > $r) {
            $newwidth = $h*$r;
            $newheight = $h;
        } else {
            $newheight = $w/$r;
            $newwidth = $w;
        }
    }
    $src = imagecreatefromjpeg($file);
    $dst = imagecreatetruecolor($newwidth, $newheight);
    imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

    return $dst;
}

and the call of the method:

$img = resize_image(‘/path/to/some/image.jpg’, 200, 200);

Remembering that GB also compresses the image.

  • is not understand that I do not use , I will look for how to incorporate your example to the code, thanks for the help

  • You can give an example of where it would be in my code?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.