Ver Mensaje Individual
  #10 (permalink)  
Antiguo 24/01/2010, 15:38
jrcomposer
 
Fecha de Ingreso: enero-2010
Mensajes: 25
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Redimensionar imagenes con php

He encontrado este código pero no consigo hacerlo funcionar. Es que como he comentado antes, me hago un lío con el php.
Código PHP:
Ver original
  1. <?
  2. function redimensionar_imagen($imagen, $nombre_imagen_asociada)
  3. {
  4. //indicamos el directorio donde se van a colgar las imágenes
  5.  
  6. $directorio = 'logotipo/' ;
  7. //establecemos los límites de ancho y alto
  8.  
  9.  
  10. $nuevo_ancho = 600 ;
  11. $nuevo_alto = 600 ;
  12.  
  13. //Recojo información de la imágen
  14.  
  15. $info_imagen = getimagesize($imagen);
  16. $alto = $info_imagen[1];
  17. $ancho = $info_imagen[0];
  18. $tipo_imagen = $info_imagen[2];
  19.  
  20. //Determino las nuevas medidas en función de los límites
  21.  
  22. if($ancho > $nuevo_ancho OR $alto > $nuevo_alto)
  23. {
  24. if(($alto - $nuevo_alto) > ($ancho - $nuevo_ancho))
  25. {
  26. $nuevo_ancho = round($ancho * $nuevo_alto / $alto,0) ;
  27. }
  28. else
  29. {
  30. $nuevo_alto = round($alto * $nuevo_ancho / $ancho,0);
  31. }
  32. }
  33. else //si la imagen es más pequeña que los límites la dejo igual.
  34. {
  35. $nuevo_alto = $alto;
  36. $nuevo_ancho = $ancho;
  37. }
  38.  
  39. // dependiendo del tipo de imagen tengo que usar diferentes funciones
  40.  
  41. switch ($tipo_imagen) {
  42. case 1: //si es gif …
  43. $imagen_nueva = imagecreate($nuevo_ancho, $nuevo_alto);
  44. $imagen_vieja = imagecreatefromgif($imagen);
  45. //cambio de tamaño…
  46. imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  47. if (!imagegif($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  48. break;
  49.  
  50. case 2: //si es jpeg …
  51.  
  52. $imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  53. $imagen_vieja = imagecreatefromjpeg($imagen);
  54. //cambio de tamaño…
  55. imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  56. if (!imagejpeg($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  57. break;
  58.  
  59. case 3: //si es png …
  60.  
  61. $imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  62. $imagen_vieja = imagecreatefrompng($imagen);
  63. //cambio de tamaño…
  64.  
  65. imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  66. if (!imagepng($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  67. break;
  68. }
  69. return true; //si todo ha ido bien devuelve true
  70.  
  71.  
  72. } ;
  73.  
  74.  
  75. //indicamos el directorio donde se van a colgar las imágenes
  76.  
  77. $directorio = './' ;
  78. //establecemos los límites de ancho y alto
  79.  
  80.  
  81. $nuevo_ancho = 150 ;
  82. $nuevo_alto = 150 ;
  83.  
  84. //Recojo información de la imágen
  85.  
  86. $info_imagen = getimagesize("logotipo/logotipo.png");
  87. $alto = $info_imagen[1];
  88. $ancho = $info_imagen[0];
  89. $tipo_imagen = $info_imagen[2];
  90.  
  91. //Determino las nuevas medidas en función de los límites
  92.  
  93. if($ancho > $nuevo_ancho OR $alto > $nuevo_alto)
  94. {
  95. if(($alto - $nuevo_alto) > ($ancho - $nuevo_ancho))
  96. {
  97. $nuevo_ancho = round($ancho * $nuevo_alto / $alto,0) ;
  98. }
  99. else
  100. {
  101. $nuevo_alto = round($alto * $nuevo_ancho / $ancho,0);
  102. }
  103. }
  104. else //si la imagen es más pequeña que los límites la dejo igual.
  105.  
  106. {
  107. $nuevo_alto = $alto;
  108. $nuevo_ancho = $ancho;
  109. }
  110.  
  111. // dependiendo del tipo de imagen tengo que usar diferentes funciones
  112. switch ($tipo_imagen) {
  113. case 1: //si es gif …
  114. $imagen_nueva = imagecreate($nuevo_ancho, $nuevo_alto);
  115. $imagen_vieja = imagecreatefromgif($imagen);
  116. //cambio de tamaño…
  117. imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  118. if (!imagegif($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  119. break;
  120.  
  121. case 2: //si es jpeg …
  122. $imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  123. $imagen_vieja = imagecreatefromjpeg($imagen);
  124. //cambio de tamaño…
  125. imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  126. if (!imagejpeg($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  127. break;
  128.  
  129. case 3: //si es png …
  130. $imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  131. $imagen_vieja = imagecreatefrompng($imagen);
  132. //cambio de tamaño…
  133. imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  134. if (!imagepng($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  135. break;
  136. }
  137. return true; //si todo ha ido bien devuelve true
  138. ?>
  139.  
  140. <?
  141. function redimensionar_imagen($imagen, $nombre_imagen_asociada)
  142. {
  143. //indicamos el directorio donde se van a colgar las imágenes
  144.  
  145. $directorio = 'logotipo/' ;
  146. //establecemos los límites de ancho y alto
  147.  
  148.  
  149. $nuevo_ancho = 600 ;
  150. $nuevo_alto = 600 ;
  151.  
  152. //Recojo información de la imágen
  153.  
  154. $info_imagen = getimagesize($imagen);
  155. $alto = $info_imagen[1];
  156. $ancho = $info_imagen[0];
  157. $tipo_imagen = $info_imagen[2];
  158.  
  159. //Determino las nuevas medidas en función de los límites
  160.  
  161. if($ancho > $nuevo_ancho OR $alto > $nuevo_alto)
  162. {
  163. if(($alto - $nuevo_alto) > ($ancho - $nuevo_ancho))
  164. {
  165. $nuevo_ancho = round($ancho * $nuevo_alto / $alto,0) ;
  166. }
  167. else
  168. {
  169. $nuevo_alto = round($alto * $nuevo_ancho / $ancho,0);
  170. }
  171. }
  172. else //si la imagen es más pequeña que los límites la dejo igual.
  173. {
  174. $nuevo_alto = $alto;
  175. $nuevo_ancho = $ancho;
  176. }
  177.  
  178. // dependiendo del tipo de imagen tengo que usar diferentes funciones
  179.  
  180. switch ($tipo_imagen) {
  181. case 1: //si es gif …
  182. $imagen_nueva = imagecreate($nuevo_ancho, $nuevo_alto);
  183. $imagen_vieja = imagecreatefromgif($imagen);
  184. //cambio de tamaño…
  185. imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  186. if (!imagegif($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  187. break;
  188.  
  189. case 2: //si es jpeg …
  190.  
  191. $imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  192. $imagen_vieja = imagecreatefromjpeg($imagen);
  193. //cambio de tamaño…
  194. imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  195. if (!imagejpeg($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  196. break;
  197.  
  198. case 3: //si es png …
  199.  
  200. $imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  201. $imagen_vieja = imagecreatefrompng($imagen);
  202. //cambio de tamaño…
  203.  
  204. imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  205. if (!imagepng($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  206. break;
  207. }
  208. return true; //si todo ha ido bien devuelve true
  209.  
  210.  
  211. } ;
  212.  
  213.  
  214. //indicamos el directorio donde se van a colgar las imágenes
  215.  
  216. $directorio = './' ;
  217. //establecemos los límites de ancho y alto
  218.  
  219.  
  220. $nuevo_ancho = 150 ;
  221. $nuevo_alto = 150 ;
  222.  
  223. //Recojo información de la imágen
  224.  
  225. $info_imagen = getimagesize("logotipo/logotipo.png");
  226. $alto = $info_imagen[1];
  227. $ancho = $info_imagen[0];
  228. $tipo_imagen = $info_imagen[2];
  229.  
  230. //Determino las nuevas medidas en función de los límites
  231.  
  232. if($ancho > $nuevo_ancho OR $alto > $nuevo_alto)
  233. {
  234. if(($alto - $nuevo_alto) > ($ancho - $nuevo_ancho))
  235. {
  236. $nuevo_ancho = round($ancho * $nuevo_alto / $alto,0) ;
  237. }
  238. else
  239. {
  240. $nuevo_alto = round($alto * $nuevo_ancho / $ancho,0);
  241. }
  242. }
  243. else //si la imagen es más pequeña que los límites la dejo igual.
  244.  
  245. {
  246. $nuevo_alto = $alto;
  247. $nuevo_ancho = $ancho;
  248. }
  249.  
  250. // dependiendo del tipo de imagen tengo que usar diferentes funciones
  251. switch ($tipo_imagen) {
  252. case 1: //si es gif …
  253. $imagen_nueva = imagecreate($nuevo_ancho, $nuevo_alto);
  254. $imagen_vieja = imagecreatefromgif($imagen);
  255. //cambio de tamaño…
  256. imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  257. if (!imagegif($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  258. break;
  259.  
  260. case 2: //si es jpeg …
  261. $imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  262. $imagen_vieja = imagecreatefromjpeg($imagen);
  263. //cambio de tamaño…
  264. imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  265. if (!imagejpeg($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  266. break;
  267.  
  268. case 3: //si es png …
  269. $imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  270. $imagen_vieja = imagecreatefrompng($imagen);
  271. //cambio de tamaño…
  272. imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  273. if (!imagepng($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  274. break;
  275. }
  276. return true; //si todo ha ido bien devuelve true
  277. ?>
¿Cómo lo tengo que llamar? Es decir, si tengo una imagen que se carga desde la base de datos, del campo de nombre logotipo:

Código PHP:
Ver original
  1. <img src="logotipo/<?php echo $row_plantilla['logotipo']; ?>" width="150" height="100" />

¿Qué tendría que cambiar para que funcione?
Gracias y disculpad por mi ignorancia.