Cómo subir una imagen y crear una miniatura con PHP

En este tutorial te explicaré cómo subir imágenes y crear miniaturas de dichas imágenes utilizando PHP. Puedes aprender a crear miniaturas dinámicamente con este tutorial e integrar este script en tus proyectos personales. El siguiente script es una solución completa a la hora de subir imágenes y crear miniaturas de esas imágenes.

Antes que nada, crearemos un script de PHP que contenga una función. El código de más abajo llamará a la función cwUpload() a la cual tendremos que pasar 7 parámetros:

  • $file_data: Para el nombre del campo
  • $target_folder: Para la carpeta en donde queramos que se almacenen las imágenes
  • $file_name: Para el nombre que le queramos dar el fichero
  • $thumb: Acepta TRUE o FALSE. Indica si queremos generar una miniatura del fichero
  • $thumb_folder: Para la carpeta en donde queramos que se almacenen las miniaturas
  • $thumb_width: Ancho en píxeles de la miniatura generada
  • $thumb_height: Alto en píxeles de la miniatura generada

La función cwUpload() devolverá el nombre de la miniatura si su creación ha sido satisfactoria. Si no ha sido así, devolverá un FALSE.

/**
*
* Author: CodexWorld
* Function Name: cwUpload()
* $field_name => Input file field name.
* $target_folder => Folder path where the image will be uploaded.
* $file_name => Custom thumbnail image name. Leave blank for default image name.
* $thumb => TRUE for create thumbnail. FALSE for only upload image.
* $thumb_folder => Folder path where the thumbnail will be stored.
* $thumb_width => Thumbnail width.
* $thumb_height => Thumbnail height.
*
**/
function cwUpload($field_name = '', $target_folder = '', $file_name = '', $thumb = FALSE, $thumb_folder = '', $thumb_width = '', $thumb_height = ''){

    //folder path setup
    $target_path = $target_folder;
    $thumb_path = $thumb_folder;
    
    //file name setup
    $filename_err = explode(".",$_FILES[$field_name]['name']);
    $filename_err_count = count($filename_err);
    $file_ext = $filename_err[$filename_err_count-1];
    if($file_name != ''){
        $fileName = $file_name.'.'.$file_ext;
    }else{
        $fileName = $_FILES[$field_name]['name'];
    }
    
    //upload image path
    $upload_image = $target_path.basename($fileName);
    
    //upload image
    if(move_uploaded_file($_FILES[$field_name]['tmp_name'],$upload_image))
    {
        //thumbnail creation
        if($thumb == TRUE)
        {
            $thumbnail = $thumb_path.$fileName;
            list($width,$height) = getimagesize($upload_image);
            $thumb_create = imagecreatetruecolor($thumb_width,$thumb_height);
            switch($file_ext){
                case 'jpg':
                    $source = imagecreatefromjpeg($upload_image);
                    break;
                case 'jpeg':
                    $source = imagecreatefromjpeg($upload_image);
                    break;

                case 'png':
                    $source = imagecreatefrompng($upload_image);
                    break;
                case 'gif':
                    $source = imagecreatefromgif($upload_image);
                    break;
                default:
                    $source = imagecreatefromjpeg($upload_image);
            }

            imagecopyresized($thumb_create,$source,0,0,0,0,$thumb_width,$thumb_height,$width,$height);
            switch($file_ext){
                case 'jpg' || 'jpeg':
                    imagejpeg($thumb_create,$thumbnail,100);
                    break;
                case 'png':
                    imagepng($thumb_create,$thumbnail,100);
                    break;

                case 'gif':
                    imagegif($thumb_create,$thumbnail,100);
                    break;
                default:
                    imagejpeg($thumb_create,$thumbnail,100);
            }

        }

        return $fileName;
    }
    else
    {
        return false;
    }
}

Comprobaremos si se ha hace clic en el botón para subir imágenes y si dicho campo no está en blanco. Ahora, llamaremos a la función cwUpload() con todos los parámetros necesarios. Si solo quieres subir una imagen, con los tres primeros parámetros es más que suficiente. Pero si quieres generar una miniatura en base a dicha imagen, debes utilizar los siete parámetros de la función cwUpload().

if(!empty($_FILES['image']['name'])){
    
    //call thumbnail creation function and store thumbnail name
    $upload_img = cwUpload('image','uploads/','',TRUE,'uploads/thumbs/','200','160');
    
    //full path of the thumbnail image
    $thumb_src = 'uploads/thumbs/'.$upload_img;
    
    //set success and error messages
    $message = $upload_img?"<span style='color:#008000;'>Image thumbnail have been created successfully.</span>":"<span style='color:#F00000;'>Some error occurred, please try again.</span>";
    
}else{
    
    //if form is not submitted, below variable should be blank
    $thumb_src = '';
    $message = '';
}

Formulario HTML

<form method="post" enctype="multipart/form-data">
    <input type="file" name="image"/>
    <input type="submit" name="submit" value="Upload"/>
</form>

Este es el código necesario para mostrar la miniatura generada en base a la imagen

<?php if($thumb_src != ''){ ?>
<img src="<?php echo $thumb_src; ?>" alt="">
<?php } ?>

Fuente: codexworld.com

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP