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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Micro Tutorial Tratamiento de imagenes en Php
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Micro Tutorial Tratamiento de imagenes en Php  (Leído 2,499 veces)
n3fisto

Desconectado Desconectado

Mensajes: 153


Ver Perfil
Micro Tutorial Tratamiento de imagenes en Php
« 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. ?>



« Última modificación: 27 Noviembre 2009, 16:10 pm por N3FISTO » En línea

n3fisto

Desconectado Desconectado

Mensajes: 153


Ver Perfil
Micro Tutorial Tratamiento de imagenes en Php II
« Respuesta #1 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


En línea

luiggy2


Desconectado Desconectado

Mensajes: 439


¡ Hello word ! XD


Ver Perfil
Re: Micro Tutorial Tratamiento de imagenes en Php
« Respuesta #2 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!
En línea

" Las grandes ideas suelen salir la mayoría de veces de grandes estupideces "
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Warnings en tratamiento de ficheros con C++ Builder XE
Programación C/C++
mario_tko 1 3,116 Último mensaje 15 Noviembre 2011, 16:01 pm
por do-while
Tratamiento de Imagenes J2me
Java
mapers 0 1,189 Último mensaje 18 Julio 2012, 20:47 pm
por mapers
Tratamiento de dos tablas a la vez
Programación C/C++
muymuyperdido 8 4,006 Último mensaje 1 Enero 2013, 13:01 pm
por muymuyperdido
Consulta tratamiento de imágenes en python
Programación General
achu08 1 1,886 Último mensaje 7 Mayo 2016, 18:53 pm
por MCKSys Argentina
¿Por qué sucede lo siguiente con el tratamiento de punteros?
Programación C/C++
mester 1 1,691 Último mensaje 14 Septiembre 2016, 12:43 pm
por do-while
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines