Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: n3fisto en 27 Noviembre 2009, 15:55 pm



Título: Micro Tutorial Tratamiento de imagenes en Php
Publicado por: n3fisto en 27 Noviembre 2009, 15:55 pm
Hola bueno miren queria darles essta ayuda a todos los que trabajan con imagenes le di el nombre de microTutorial por que es mi primero y si tienes fallas me avisas porfavor soy principiante:

NOTA: La informacion la saque de toda parte asi que es un codigo Mixtura (Me refiero que ES CODIGO sacado de varios source)

TRATAMIENTO DE LA IMAGEN
Primero tenemos que aprender a tratar a la imagen con esta pagina lo que hacemos es redimensionar el tamaño y ajustarlo.

Nombre de la pagina img.inc.php

Código
  1. <?php
  2. //TRATAMIENTO DE IMAGENES
  3. //====================================
  4.  
  5. class somaImagen{
  6. var $imagen_recurso; var $imagen_salida;
  7. var $imagen_recurso_ancho; var $imagen_salida_ancho;
  8. var $imagen_recurso_alto; var $imagen_salida_alto;
  9. var $imagen_recurso_desde_x = 0; var $imagen_salida_desde_x = 0;
  10. var $imagen_recurso_desde_y = 0; var $imagen_salida_desde_y = 0;
  11. var $escala; var $imagen_imprimible;
  12. var $rango_menor = 1;
  13. var $rango_mayor = 1000;
  14.  
  15. function validarMedida($valor){
  16. if ($valor>=($this->rango_menor) and $valor<$this->rango_mayor){
  17. return $valor;
  18. }else{
  19. if($valor <= ($this->rango_menor-1) ){return ($this->rango_menor); }
  20. if($valor>= $this->rango_mayor ){return $this->rango_mayor ; }
  21. }
  22. }
  23.  
  24. function crearImagen($imagen){
  25. $this->imagen_recurso = $imagen;
  26. $this->imagen_salida = imagecreatefromjpeg($this->imagen_recurso);
  27. $this->imagen_recurso_ancho = imagesx($this->imagen_salida);
  28. $this->imagen_recurso_alto = imagesy($this->imagen_salida);
  29. }
  30.  
  31.  
  32. function crearSalida($ancho,$alto){
  33. $this->imagen_salida_ancho = $ancho;
  34. $this->imagen_salida_alto = $alto;
  35. $this->imagen_imprimible = imagecreatetruecolor($this->imagen_salida_ancho,$this->imagen_salida_alto);
  36. $this->imagen_imprimible,
  37. $this->imagen_salida,
  38. $this->imagen_recurso_desde_x,
  39. $this->imagen_recurso_desde_y,
  40. $this->imagen_salida_desde_x,
  41. $this->imagen_salida_desde_y,
  42. $this->imagen_salida_ancho,
  43. $this->imagen_salida_alto,
  44. $this->imagen_recurso_ancho,
  45. $this->imagen_recurso_alto
  46. );
  47. imagejpeg($this->imagen_imprimible, NULL,100);
  48. imagedestroy($this->imagen_imprimible);
  49. }
  50.  
  51. function Cuadro($lados,$imagen){
  52. $lados=$this->validarMedida($lados);
  53. $this->crearImagen($imagen);
  54. if ( $this->imagen_recurso_ancho>= $this->imagen_recurso_alto )
  55. {$this->escala=$lados/$this->imagen_recurso_ancho;}
  56.            else
  57. {$this->escala=$lados/$this->imagen_recurso_alto;}
  58. $this->crearSalida($this->imagen_recurso_ancho * $this->escala , $this->imagen_recurso_alto * $this->escala);
  59. }
  60.  
  61. function AnchoMax($ancho,$imagen){
  62. $ancho=$this->validarMedida($ancho);
  63. $this->crearImagen($imagen);
  64. $this->escala=$ancho/$this->imagen_recurso_ancho;
  65. $this->crearSalida($this->imagen_recurso_ancho * $this->escala , $this->imagen_recurso_alto * $this->escala);
  66. }
  67.  
  68.  
  69. function AltoMax($alto,$imagen){
  70. $alto=$this->validarMedida($alto);
  71. $this->crearImagen($imagen);
  72. $this->escala=$alto/$this->imagen_recurso_alto;
  73. $this->crearSalida($this->imagen_recurso_ancho * $this->escala , $this->imagen_recurso_alto * $this->escala);
  74. }
  75.  
  76. function Encuadrar($medida,$imagen,$alineacion){
  77. $medida=$this->validarMedida($medida);
  78. $this->crearImagen($imagen);
  79. if ( $this->imagen_recurso_ancho <= $this->imagen_recurso_alto ){
  80. $this->escala = $this->imagen_salida_ancho/$this->imagen_recurso_ancho;
  81. if($alineacion!=0){
  82. if($alineacion==1){
  83. $this->imagen_salida_desde_y=($this->imagen_recurso_alto-$this->imagen_recurso_ancho);
  84. }
  85. if($alineacion==2){
  86. $this->imagen_salida_desde_y=($this->imagen_recurso_alto-$this->imagen_recurso_ancho)/2;
  87. }
  88. }
  89. $this->imagen_recurso_alto = $this->imagen_recurso_ancho;
  90. }else {
  91. $this->escala = $this->imagen_salida_alto/$this->imagen_recurso_alto;
  92. if($alineacion!=0){
  93. if($alineacion==1){
  94. $this->imagen_salida_desde_x=($this->imagen_recurso_ancho-$this->imagen_recurso_alto);
  95. }
  96. if($alineacion==2){
  97. $this->imagen_salida_desde_x=($this->imagen_recurso_ancho-$this->imagen_recurso_alto)/2;
  98. }
  99. }
  100. $this->imagen_recurso_ancho = $this->imagen_recurso_alto;
  101. }
  102. $this->crearSalida($medida,$medida);
  103. }
  104. }
  105. ?>



Título: Micro Tutorial Tratamiento de imagenes en Php II
Publicado por: n3fisto en 27 Noviembre 2009, 16:04 pm
Continuando........

Luego de realizar ese tratamiento lo que sigue es la carga a la base de datos, y la redimension de la imagen, lo que yo pude hacer, fue que en una sola pagina me cree un temporal mas la subida a la base de datos.

Subir imagen a la Base de Datos

Lo siguiente que se hace es crear la pagina que se encarga de la subida, como yo soy Linuxero pude hacer que se suba el servidor de la misma manera la imagen aver que les parece

Código
  1. <?php
  2.  // Constantes
  3.  # Altura de el thumbnail en píxeles
  4.  define("ALTURA", 100);
  5.  # Nombre del archivo temporal del thumbnail
  6.  //define("NAMETHUMB", "/tmp/thumbtemp"); //Esto en servidores Linux, en Windows podría ser:
  7. define("NAMETHUMB", "D:/windows/temp/thumbtemp"); // y te olvidas de los problemas de permisos   Bueno lo de D: es por que en mi portatil esta el sistema
  8.  # Servidor de base de datos
  9.  define("DBHOST", "localhost");
  10.  # nombre de la base de datos
  11.  define("DBNAME", "productos");
  12.  # Usuario de base de datos
  13.  define("DBUSER", "root");
  14.  # Password de base de datos
  15.  define("DBPASSWORD", "delirion");
  16.  // Mime types permitidos
  17.  $mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
  18.  // Variables de la foto
  19.  $name = $_FILES['form_foto']['name'];
  20.  $type = $_FILES['form_foto']['type'];
  21.  $tmp_name = $_FILES['form_foto']['tmp_name'];
  22.  $size = $_FILES['form_foto']['size'];
  23.  // Verificamos si el archivo es una imagen válida
  24.  if(!in_array($type, $mimetypes))
  25.    die("El archivo que subiste no es una imagen válida");
  26.  // Creando el thumbnail
  27.  switch($type) {
  28.    case $mimetypes[0]:
  29.    case $mimetypes[1]:
  30.      $img = imagecreatefromjpeg($tmp_name);
  31.      break;
  32.    case $mimetypes[2]:
  33.      $img = imagecreatefromgif($tmp_name);
  34.      break;
  35.    case $mimetypes[3]:
  36.      $img = imagecreatefrompng($tmp_name);
  37.      break;
  38.  }
  39.  
  40.  $datos = getimagesize($tmp_name);
  41.  $ratio = ($datos[1]/ALTURA);
  42.  $ancho = round($datos[0]/$ratio);
  43.  $thumb = imagecreatetruecolor($ancho, ALTURA);
  44.  imagecopyresized($thumb, $img, 0, 0, 0, 0, $ancho, ALTURA, $datos[0], $datos[1]);
  45.  switch($type) {
  46.    case $mimetypes[0]:
  47.    case $mimetypes[1]:
  48.      imagejpeg($thumb, NAMETHUMB);
  49.  break;
  50.    case $mimetypes[2]:
  51.      imagegif($thumb, NAMETHUMB);
  52.      break;
  53.    case $mimetypes[3]:
  54.      imagepng($thumb, NAMETHUMB);
  55.      break;
  56.  }
  57.  // Extrae los contenidos de las fotos
  58.  # contenido de la foto original
  59.  $fp = fopen($tmp_name, "rb");
  60.  $tfoto = fread($fp, filesize($tmp_name));
  61.  $tfoto = addslashes($tfoto);
  62.  fclose($fp);
  63.  # contenido del thumbnail
  64.  $fp = fopen(NAMETHUMB, "rb");
  65.  $tthumb = fread($fp, filesize(NAMETHUMB));
  66.  $tthumb = addslashes($tthumb);
  67.  fclose($fp);
  68.  // Borra archivos temporales si es que existen
  69.  @unlink($tmp_name);
  70.  @unlink(NAMETHUMB);
  71.  // Guardamos todo en la base de datos
  72.  ?>
NOTA Bueno con esto termina si necesitan algo o falta algo espero recibir sus criticas y me ayuden a mejorarlo o empeorarlo jajaaj gracias a todos saludos y porfavor sean compasivos es mi primer micro tutorial.... es mi primer bb lo puedo decir


Título: Re: Micro Tutorial Tratamiento de imagenes en Php
Publicado por: luiggy2 en 27 Noviembre 2009, 16:17 pm
Está interesante, pero si se llama microtutorial, es porque enseña a hacer las cosas, no solo poner código.

Por lo menos podrías poner algún que otro comentario.


Saludos!