elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Guardar una imagen y su miniatura
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Guardar una imagen y su miniatura  (Leído 2,239 veces)
n3fisto

Desconectado Desconectado

Mensajes: 153


Ver Perfil
Guardar una imagen y su miniatura
« en: 17 Julio 2010, 06:46 am »

Hola como les va bueno queria mostrarles este Script el cual espero que a alguien le sirva lo use para un proyecto..

Antes de todo se debe de tener instalada la libreria GD,si no la tenemos activada solo tenemos que modificar el archivo php.ini que se encuentra en C:\Windows (puede variar según tu versión de Windows), y agregar la línea extension=php_gd2.dll en la sección "Dynamic Extensions". El archivo php_gd2.dll debe estar en la carpeta "extensions" dentro del directorio donde instalaste el php, por ejemplo "C:\php\extensions".


El formulario de upload y el script php está en una sola página, la nombré como subida.php:
Código
  1. <?php
  2. // Verificamos que el formulario no ha sido enviado aun
  3. $postback = (isset($_POST["enviar"])) ? true : false;
  4. if($postback){
  5.  // Nivel de errores
  6.  error_reporting(E_ALL);
  7.  // Constantes
  8.  # Altura de el thumbnail en píxeles
  9.  define("ALTURA", 100);
  10.  # Nombre del archivo temporal del thumbnail
  11.  define("NAMETHUMB", "/tmp/thumbtemp"); //Esto en servidores Linux, en Windows podría ser:
  12. // define("NAMETHUMB", "c:/windows/temp/thumbtemp"); y te olvidas de los problemas de permisos
  13.  # Servidor de base de datos
  14.  define("DBHOST", "localhost");
  15.  # nombre de la base de datos
  16.  define("DBNAME", "test");
  17.  # Usuario de base de datos
  18.  define("DBUSER", "root");
  19.  # Password de base de datos
  20.  define("DBPASSWORD", "");
  21.  // Mime types permitidos
  22.  $mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
  23.  // Variables de la foto
  24.  $name = $_FILES["foto"]["name"];
  25.  $type = $_FILES["foto"]["type"];
  26.  $tmp_name = $_FILES["foto"]["tmp_name"];
  27.  $size = $_FILES["foto"]["size"];
  28.  // Verificamos si el archivo es una imagen válida
  29.  if(!in_array($type, $mimetypes))
  30.    die("El archivo que subiste no es una imagen válida");
  31.  // Creando el thumbnail
  32.  switch($type) {
  33.    case $mimetypes[0]:
  34.    case $mimetypes[1]:
  35.      $img = imagecreatefromjpeg($tmp_name);
  36.      break;
  37.    case $mimetypes[2]:
  38.      $img = imagecreatefromgif($tmp_name);
  39.      break;
  40.    case $mimetypes[3]:
  41.      $img = imagecreatefrompng($tmp_name);
  42.      break;
  43.  }
  44.  $datos = getimagesize($tmp_name);
  45.  $ratio = ($datos[1]/ALTURA);
  46.  $ancho = round($datos[0]/$ratio);
  47.  $thumb = imagecreatetruecolor($ancho, ALTURA);
  48.  imagecopyresized($thumb, $img, 0, 0, 0, 0, $ancho, ALTURA, $datos[0], $datos[1]);
  49.  switch($type) {
  50.    case $mimetypes[0]:
  51.    case $mimetypes[1]:
  52.      imagejpeg($thumb, NAMETHUMB);
  53.          break;
  54.    case $mimetypes[2]:
  55.      imagegif($thumb, NAMETHUMB);
  56.      break;
  57.    case $mimetypes[3]:
  58.      imagepng($thumb, NAMETHUMB);
  59.      break;
  60.  }
  61.  // Extrae los contenidos de las fotos
  62.  # contenido de la foto original
  63.  $fp = fopen($tmp_name, "rb");
  64.  $tfoto = fread($fp, filesize($tmp_name));
  65.  $tfoto = addslashes($tfoto);
  66.  fclose($fp);
  67.  # contenido del thumbnail
  68.  $fp = fopen(NAMETHUMB, "rb");
  69.  $tthumb = fread($fp, filesize(NAMETHUMB));
  70.  $tthumb = addslashes($tthumb);
  71.  fclose($fp);
  72.  // Borra archivos temporales si es que existen
  73.  @unlink($tmp_name);
  74.  @unlink(NAMETHUMB);
  75.  // Guardamos todo en la base de datos
  76.  #nombre de la foto
  77.  $nombre = $_POST["nombre"];
  78.  $link = mysql_connect(DBHOST, DBUSER, DBPASSWORD) or die(mysql_error($link));;
  79.  mysql_select_db(DBNAME, $link) or die(mysql_error($link));
  80.  $sql = "INSERT INTO tabla(nombre, foto, thumb, mime)
  81.    VALUES
  82.    ('$nombre', '$tfoto', '$tthumb', '$type')";
  83.  mysql_query($sql, $link) or die(mysql_error($link));
  84.  echo "Fotos guardadas";
  85.  exit();
  86. }
  87. ?>


El Html

Código
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>Imagen a Blob</title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. </head>
  8. <body>
  9. <form name="frmimage" id="frmimage" method="post"
  10.        enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>">
  11.        Nombre: <input type="text" id="nombre" name="nombre" /><br />
  12.        Imagen: <input type="file" id="foto" name="foto" /><br />
  13.        <input type="submit" name="enviar" id="enviar" value="Guardar" />
  14. </form>
  15. </body>
  16. </html>
  17.  
  18.  
  19. [code=sql]CREATE TABLE `tabla` (
  20.  `idfoto` int(3) NOT NULL AUTO_INCREMENT,
  21.  `nombre` varchar(255) NOT NULL DEFAULT '',
  22.  `foto` blob NOT NULL,
  23.  `thumb` blob NOT NULL,
  24.  `mime` varchar(40) NOT NULL DEFAULT '',
  25.  PRIMARY KEY  (`idfoto`)
  26. ) ;


Según el tipo MIME de la imagen, crearemos la miniatura con las funciones imagecreatefromjpeg(), imagecreatefromgif()  o imagecreatefrompng().

La función imagecopyresized() crea la miniatura de la imagen, aunque también podemos utilizar imagecopyresampled().

Espero que  les sirva de algo......
Saludos

[/code]


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
vistas miniatura en vez de iconos
Windows
maxmag 4 4,782 Último mensaje 20 Diciembre 2011, 07:23 am
por Eleкtro
Ayuda para guardar una imagen en 215 x 147
Diseño Gráfico
theluigy13etv 1 3,116 Último mensaje 21 Diciembre 2011, 15:52 pm
por Azielito
guardar imagen
PHP
kakashi20 1 1,785 Último mensaje 21 Septiembre 2012, 01:17 am
por дٳŦ٭
Project Ophelia, un PC miniatura
Noticias
wolfbcn 1 1,667 Último mensaje 23 Enero 2013, 14:33 pm
por crazykenny
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines