0
I’m using the resize-class to upload images, resize and other options if necessary.
My only problem is that I want to rename the image when uploading, so that there are no images with the same name and even for privacy reasons. 
I wish something like: 
time(). uniqid(md5());
I just want to do it this way and it’s already great, I wish an easy way to change the name of the image, I saw something like $_FILES['file']['tmp_name'] however, I’m not succeeding this way.
Below is the code of the page where I am uploading and registering in the BD
add_product.php
<?php 
include_once("funcao/resize-class.php");
if(isset($_POST['foto-cadastrada'])):
    $idproduto = $_POST['id'];
    $caminho = "imagens/produtos/";
    $imagem = $_FILES['imagemupload']['name'];
        if(move_uploaded_file($_FILES['imagemupload']['tmp_name'], $caminho . $imagem)){ 
            // Cria tamanhos necessários
            $resize_tamanho1 = new resize($caminho . $imagem);
            $resize_tamanho2 = new resize($caminho . $imagem);
            // Define as medidas que cada tamanho irá ter
            $resize_tamanho1->resizeImage(320, 240, 'auto');
            $resize_tamanho2->resizeImage(640, 480, 'auto');
            // Renomeia imagem para que seja possivel o mesmo nome ter vários tamanhos
            $tamanho1 = "tamanho1_".$imagem;
            $tamanho2 = "tamanho2_".$imagem;
            //Define o caminho, o nome e a qualidade
            $resize_tamanho1->saveImage($caminho . $tamanho1, 100);
            $resize_tamanho2->saveImage($caminho . $tamanho2, 100);
            //apaga imagem original
            unlink($caminho . $imagem);
        }
        $cadastrando = $conn->prepare("INSERT INTO fotos_produtos (id_produto, arquivo, posicao) VALUES (?, ?, ?) ");
        $cadastrando->execute(array($idproduto, $imagem, 0));
        header("Location: add_produto.php?adicionar-fotos&id=$idproduto");
endif;
?>
resize-class.php
<?php
Class resize {
    // *** Class variables
    private $image;
    private $width;
    private $height;
    private $imageResized;
    function __construct($fileName) {
        // *** Open up the file
        $this->image = $this->openImage($fileName);
        // *** Get width and height
        $this->width = imagesx($this->image);
        $this->height = imagesy($this->image);
    }
    ## --------------------------------------------------------
    private function openImage($file) {
        // *** Get extension
        $extension = strtolower(strrchr($file, '.'));
        switch ($extension) {
            case '.jpg':
            case '.jpeg':
                $img = @imagecreatefromjpeg($file);
                break;
            case '.gif':
                $img = @imagecreatefromgif($file);
                break;
            case '.png':
                $img = @imagecreatefrompng($file);
                break;
            default:
                $img = false;
                break;
        }
        return $img;
    }
    ## --------------------------------------------------------
    public function resizeImage($newWidth, $newHeight, $option = "auto") {
        // *** Get optimal width and height - based on $option
        $optionArray = $this->getDimensions($newWidth, $newHeight, $option);
        $optimalWidth = $optionArray['optimalWidth'];
        $optimalHeight = $optionArray['optimalHeight'];
        // *** Resample - create image canvas of x, y size
        $this->imageResized = imagecreatetruecolor($optimalWidth, $optimalHeight);
        imagecopyresampled($this->imageResized, $this->image, 0, 0, 0, 0, $optimalWidth, $optimalHeight, $this->width, $this->height);
        // *** if option is 'crop', then crop too
        if ($option == 'crop') {
            $this->crop($optimalWidth, $optimalHeight, $newWidth, $newHeight);
        }
    }
    ## --------------------------------------------------------
    private function getDimensions($newWidth, $newHeight, $option) {
        switch ($option) {
            case 'exact':
                $optimalWidth = $newWidth;
                $optimalHeight = $newHeight;
                break;
            case 'portrait':
                $optimalWidth = $this->getSizeByFixedHeight($newHeight);
                $optimalHeight = $newHeight;
                break;
            case 'landscape':
                $optimalWidth = $newWidth;
                $optimalHeight = $this->getSizeByFixedWidth($newWidth);
                break;
            case 'auto':
                $optionArray = $this->getSizeByAuto($newWidth, $newHeight);
                $optimalWidth = $optionArray['optimalWidth'];
                $optimalHeight = $optionArray['optimalHeight'];
                break;
            case 'crop':
                $optionArray = $this->getOptimalCrop($newWidth, $newHeight);
                $optimalWidth = $optionArray['optimalWidth'];
                $optimalHeight = $optionArray['optimalHeight'];
                break;
        }
        return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
    }
    ## --------------------------------------------------------
    private function getSizeByFixedHeight($newHeight) {
        $ratio = $this->width / $this->height;
        $newWidth = $newHeight * $ratio;
        return $newWidth;
    }
    private function getSizeByFixedWidth($newWidth) {
        $ratio = $this->height / $this->width;
        $newHeight = $newWidth * $ratio;
        return $newHeight;
    }
    private function getSizeByAuto($newWidth, $newHeight) {
        if ($this->height < $this->width) {
        // *** Image to be resized is wider (landscape)
            $optimalWidth = $newWidth;
            $optimalHeight = $this->getSizeByFixedWidth($newWidth);
        } elseif ($this->height > $this->width) {
        // *** Image to be resized is taller (portrait)
            $optimalWidth = $this->getSizeByFixedHeight($newHeight);
            $optimalHeight = $newHeight;
        } else {
        // *** Image to be resizerd is a square
            if ($newHeight < $newWidth) {
                $optimalWidth = $newWidth;
                $optimalHeight = $this->getSizeByFixedWidth($newWidth);
            } else if ($newHeight > $newWidth) {
                $optimalWidth = $this->getSizeByFixedHeight($newHeight);
                $optimalHeight = $newHeight;
            } else {
                // *** Sqaure being resized to a square
                $optimalWidth = $newWidth;
                $optimalHeight = $newHeight;
            }
        }
        return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
    }
    ## --------------------------------------------------------
    private function getOptimalCrop($newWidth, $newHeight) {
        $heightRatio = $this->height / $newHeight;
        $widthRatio = $this->width / $newWidth;
        if ($heightRatio < $widthRatio) {
            $optimalRatio = $heightRatio;
        } else {
            $optimalRatio = $widthRatio;
        }
        $optimalHeight = $this->height / $optimalRatio;
        $optimalWidth = $this->width / $optimalRatio;
        return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
    }
    ## --------------------------------------------------------
    private function crop($optimalWidth, $optimalHeight, $newWidth, $newHeight) {
        // *** Find center - this will be used for the crop
        $cropStartX = ( $optimalWidth / 2) - ( $newWidth / 2 );
        $cropStartY = ( $optimalHeight / 2) - ( $newHeight / 2 );
        $crop = $this->imageResized;
        //imagedestroy($this->imageResized);
        // *** Now crop from center to exact requested size
        $this->imageResized = imagecreatetruecolor($newWidth, $newHeight);
        imagecopyresampled($this->imageResized, $crop, 0, 0, $cropStartX, $cropStartY, $newWidth, $newHeight, $newWidth, $newHeight);
    }
    ## --------------------------------------------------------
    public function saveImage($savePath, $imageQuality = "100") {
        // *** Get extension
        $extension = strrchr($savePath, '.');
        $extension = strtolower($extension);
        switch ($extension) {
            case '.jpg':
            case '.jpeg':
                if (imagetypes() & IMG_JPG) {
                    imagejpeg($this->imageResized, $savePath, $imageQuality);
                }
                break;
            case '.gif':
                if (imagetypes() & IMG_GIF) {
                    imagegif($this->imageResized, $savePath);
                }
                break;
            case '.png':
                // *** Scale quality from 0-100 to 0-9
                $scaleQuality = round(($imageQuality / 100) * 9);
                // *** Invert quality setting as 0 is best, not 9
                $invertScaleQuality = 9 - $scaleQuality;
                if (imagetypes() & IMG_PNG) {
                    imagepng($this->imageResized, $savePath, $invertScaleQuality);
                }
                break;
            // ... etc
            default:
                // *** No extension - No save.
                break;
        }
        imagedestroy($this->imageResized);
    }
    ## --------------------------------------------------------
}
?>
You just want to know how to rename the image after upload?
– Kazzkiq
I want to rename the image while uploading only. In the case after the upload no longer serves because it may have replaced one with the same name.
– Tiago Boeing