Autor Tema: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!  (Leído 3381 veces)

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« en: 17 de Octubre de 2006, 21:11:56 pm »
Bueno antes que nada, este codigo se utiliza para REDIMENSIONAR una imagen a el tamaño que nosotros deseamos.
Este sistema usa la libreria GD de PHP, asi que necesitas tenerla instalada para que funcione el script
OJO : Este sistema no crea imagenes redimensionadas, sino que las redimensionas y las guarda en la memoria de tal forma que no ocupa extra de espacio.

Vamos con el codigo:
Redimensionar.php
<?php 
$nombre
=basename($_GET[&#39;imagen&#39;]); 
$datos getimagesize($nombre);

if(!
$_GET[anchura]) {
$anchura=500;
} else {
$anchura $_GET[anchura];
}
if(!
$_GET[hmax]) {
$hmax=375;
} else {
$hmax $_GET[hmax];
}

if(
$datos[0] < $anchura) {
$anchura $datos[0];
}

if(
$datos[1] < $hmax) {
$hmax $datos[1];
}
  
if(
$datos[2]==1){$img = @imagecreatefromgif($nombre);} 
if(
$datos[2]==2){$img = @imagecreatefromjpeg($nombre);} 
if(
$datos[2]==3){$img = @imagecreatefrompng($nombre);} 
$ratio = ($datos[0] / $anchura); 
$altura = ($datos[1] / $ratio); 
if(
$altura>$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;} 
$thumb imagecreatetruecolor($anchura,$altura); 
imagecopyresampled($thumb$img0000$anchura$altura$datos[0], $datos[1]); 
if(
$datos[2]==1){header("Content-type: image/gif"); imagegif($thumb);} 
if(
$datos[2]==2){header("Content-type: image/jpeg");imagejpeg($thumb);} 
if(
$datos[2]==3){header("Content-type: image/png");imagepng($thumb); } 
imagedestroy($thumb); 
?>


Este es un codigo un poquillo complicadete... a decir verdad es muy complicado... voy a intentar explicarlo pero no se si lo are bien xD

$nombre=basename($_GET[&#39;imagen&#39;]); 
$datos getimagesize($nombre);

Sacamos el nombre base del archivo
El nombre base de un archivo es el nombre en si, esa funcion lo que haces es que si tu pones:
?imagen=imagenes/mialbum/mifoto.jpg
Solo seleccionara "mifoto.jpg" para sacar el nombre de la imagen
Y Ademas calcura el peso de la imagen, devolviendo el ancho y alto de esta imagen y el tipo de archivo que es.
Creando una "array"
Asi pues, la variable $datos es una array, y estos son sus indices:
$datos[0] -> Contiene el ancho de la imagen
$datos[1] -> Contiene la altura de la imgen
$datos[2] -> Indica el tipo de imagen (1 = GIF, 2 = JPG, 3 = PNG...)
$datos[3] -> Texto con que contiene: "height="---" width="---"" para usarlo directamente en una etiqueta Img de html

if(!$_GET[anchura]) {
$anchura=500;
} else {
$anchura $_GET[anchura];
}
if(!
$_GET[hmax]) {
$hmax=375;
} else {
$hmax $_GET[hmax];
}

if(
$datos[0] < $anchura) {
$anchura $datos[0];
}

if(
$datos[1] < $hmax) {
$hmax $datos[1];
}

Traducido al español bonito:
Si no encuentra "anchura" con la global $_GET entonces añadimos una anchura por defecto, que es 500
Si no encuentra "hmax" (alto) con la global $_GET entonces añadimos una altura por defecto, que es 375

Si la anchura es menor que la anchura a la que queremos reducirla, la variable $anchura pasa a contener la anchura real de la imagen
Si la altura es menor que la altura a la que queremos reducir la imagen, la variable $hmax pasa a contener la altura real de la imagen

if($datos[2]==1){$img = @imagecreatefromgif($nombre);} 
if(
$datos[2]==2){$img = @imagecreatefromjpeg($nombre);} 
if(
$datos[2]==3){$img = @imagecreatefrompng($nombre);} 

Si el tipo de imagen es GIF (1) => $img contendra @imagecreatefromgif($nombre)
Si el tipo de imagen es JPEG (2) => $img contendra @imagecreatefromjpeg($nombre)
Si el tipo de imagen es PNG (3) =>  $img contendra @imagecreatefrompng($nombre)
La funcion "imagecreatefrom***" sirve para crear una imagen nueva desde un archivo o una URL (en este caso un archivo)

$ratio 
= ($datos[0] / $anchura); 
$altura = ($datos[1] / $ratio); 

Simples calculos matematicos
$ratio es igual a la anchura dividido por la anchura que queremos que tenga la imagen
$altura es igual a altura dividido entre $ratio

if($altura>$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;} 
$thumb imagecreatetruecolor($anchura,$altura); 
imagecopyresampled($thumb$img0000$anchura$altura$datos[0], $datos[1]); 
if(
$datos[2]==1){header("Content-type: image/gif"); imagegif($thumb);} 
if(
$datos[2]==2){header("Content-type: image/jpeg");imagejpeg($thumb);} 
if(
$datos[2]==3){header("Content-type: image/png");imagepng($thumb); } 

Mas calculos para determinar anchura y altura.
Crear imagen en color con la altura que queremos y la anchura que queremos
Y copiamos el contenido de nuestra imagen que queremos redimensionar, al archivo que hemos creado en la variable ($thumb)
Luego enviamos la imagen y lo mostramos con headers y todo xD.

La verdad es que es un codigo dificil de explicar y lo he hecho como he podido, porque ni yo lo entiendo del todo, bueno, vamos con el proceso practico.

Como usar el script redimensionar.php
[/b][/size]

Tenemos que tener en una carpeta lo siguiente:
- Imagen que queremos reducir
- Redimensionar.php
- Crear un nuevo archivo

Vamos con ese archivo.
Prueba.php
<?php
$img 
""// NOMBRE DE LA IMAGEN A REDUCIR
echo &#39;<img src="redimensionar.php?imagen=&#39;.$img.&#39;&anchura=ESCRIBIR AQUI EL ANCHO&hmax=ESCRIBIR AQUI LA ALTURA">&#39;;
?>


Eso es todo, si tienen dudas de este magnifico script solo pregunten y intentare resolverlo.
Saludos!!
« Última modificación: 17 de Octubre de 2006, 21:14:08 pm por TLX »
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Comunidad PHPeros

Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« en: 17 de Octubre de 2006, 21:11:56 pm »

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #1 en: 17 de Octubre de 2006, 21:17:55 pm »
TLX aquí no importamos códigos externos. Los hacemos entre todos y respondemos a las dudas del que quiere aprender.  ;)
« Última modificación: 18 de Octubre de 2006, 00:01:40 am por Raken »
Raken - Moderador para PHP y HTML

Desconectado sagitari

  • PHPer@
  • **
  • Mensajes: 86
  • Karma: 10
  • Sexo: Femenino
  • "A&X&me...4ever"
    • Ver Perfil
    • http://freewebtown.com/sagitari
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #2 en: 17 de Octubre de 2006, 21:20:26 pm »
@raken;
explica los códigos, y eso, se agradece.


@TLX;
Esta librería verdad que también se podría usar para un código de seguridad para tipear para saber si el user es un user o una máquina?
sabes, lo típico que sale una imagen y dicen, teclea el código que visualice ...

10 ! :)


http://freewebtown.com/sagitari

Web para aprender a hacer una web desde cero ^^

Videotutoriales y demás.

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #3 en: 17 de Octubre de 2006, 21:22:53 pm »
Sip, la libreria GD tambien se utiliza para lo que tu dices :P

@Raken:
Segun descripcion de "Codigos PHP & Mysql":
En este foro encontrarás explicaciones de codigos programados en PHP con explicaciones detalladas.

Tengo mi codigo.
Esta en Php
Lo he explicado
¿Cual es el problema? O.o

Que yo sepa para lo que tu dices esta el foro Dudas PHP & Mysql
Para ayudar a la gente a resolver sus dudas :S

Pero en fin, si molesta lo quito.
0 Problems XD

Salu2!
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Conectado naveda

  • Administrador General
  • PHPero Master
  • *****
  • Mensajes: 2.282
  • Karma: 165
  • Sexo: Masculino
    • Ver Perfil
    • naveda.me
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #4 en: 17 de Octubre de 2006, 22:11:36 pm »
Me parece que es el foro correcto, y un post que sigue las normas... ;)

Ma gusta tu codigo :P Felicidades
Por favor, leete las Normas


Desconectado Pc-Admin

  • PHPer@ Fijo
  • ***
  • Mensajes: 118
  • Karma: 3
  • Sexo: Masculino
    • Ver Perfil
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #5 en: 17 de Octubre de 2006, 22:22:38 pm »
Esta wapo, buen codigo :):)
Todo en esta vida, es practicar.

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #6 en: 18 de Octubre de 2006, 00:01:20 am »
Okkk no he dicho nada. Te aseguro que cuando escribí eso NO lo ví explicado.  ;)
Raken - Moderador para PHP y HTML

Desconectado -RiPeRcOp-

  • PHPer@ Fijo
  • ***
  • Mensajes: 206
  • Karma: 7
  • Sexo: Masculino
  • RiPeR, The House`s assistant
    • Ver Perfil
    • RevolutionW
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #7 en: 24 de Octubre de 2006, 17:17:18 pm »
si es verdad esta wapa la aportacion, ahora yo queria utilizar eso, para hacer como un fotolog, no se si conocen lo q es, aqui les dejo el link www.foto.terra.com.ar/gonzalo_gabriel_2006
Pues yo queria hacer algo parecido a eso, utiliza calculo base de datos, $_GET seguramente, y almacenamiento de fotos en el hosting si no me equivoco
ademas tiene un servicio de comentarios q aparece por fotos
q sucede, ese servicio esta limitado en 2 razones
  • No te permite publicar mas de 10 comentarios (cosa q quiero cambiar en mi script)
  • No te deja postear mas de 1 foto por dia a menos q sea por Movil, lo cual hay q pagar
  • tambien tiene un limite de 30 fotos

entonces yo queria saber como hago para q yo suba la foto por un sector, un pagina especial para eso, q aparesca en el index, y luego
al postear otra foto esa pase a ser la segundo foto y q aparesca como alli en el link.

Desde ya muchas gracias

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #8 en: 01 de Noviembre de 2006, 11:16:01 am »
No entiendo muy bien lo que quieres decir

Pero yo tambien uso ese script para un fotoblog, es muy util, puedes visitar mi fotoblog en:
http://85.136.60.227/tibia/tfb/

Lo suelo meter online con el xampp hasta que lo acabe, y es solo para usuarios de tibia, pero si quieres testearlo metete con mi account:

Mata-Zanoz
----

Salu2!!
« Última modificación: 20 de Julio de 2010, 13:08:49 pm por TLX »
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Krosty

  • PHPer@
  • **
  • Mensajes: 75
  • Karma: 0
    • Ver Perfil
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #9 en: 13 de Diciembre de 2006, 23:38:07 pm »
sorry por revivir el post pero, no se puede hacer esto sin la necesidad de lso gets?

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #10 en: 14 de Diciembre de 2006, 22:16:37 pm »
Claro que si, pero no crees que es mejor con los gets? hace todo mucho mas dinamico!
Saludos
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Krosty

  • PHPer@
  • **
  • Mensajes: 75
  • Karma: 0
    • Ver Perfil
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #11 en: 14 de Diciembre de 2006, 23:15:37 pm »
si, pero para lo que yo la ocupo no :P ... eh estado tratando de entenderlo para modificarlo :S pero no se :P

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #12 en: 15 de Diciembre de 2006, 19:20:37 pm »
Facil, cambia esto:

$nombre
=basename($_GET[&#39;imagen&#39;]);
$datos getimagesize($nombre);

if(!
$_GET[anchura]) {
$anchura=500;
} else {
$anchura $_GET[anchura];
}
if(!
$_GET[hmax]) {
$hmax=375;
} else {
$hmax $_GET[hmax];
}

Por esto:

$nombre 
""//El nombre de tu imagen
$datos getimagesize($nombre);

$anchura = ; // Tu anchura aqui sin comillas (")
$hmax = ; // Tu altura aqui sin comillas (")


Saludos!
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Krosty

  • PHPer@
  • **
  • Mensajes: 75
  • Karma: 0
    • Ver Perfil
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #13 en: 15 de Diciembre de 2006, 22:18:56 pm »
ok, ya se como mushas gracias, no me habia puesto a verlo detenidamente

Desconectado Dj-Celta

  • PHPero Avanzado
  • ****
  • Mensajes: 398
  • Karma: 16
  • <?php Solo quiero aprender ?>
    • Ver Perfil
Re: Usando la libreria GD de Php // Saquemos provecho a las imagenes!!
« Respuesta #14 en: 19 de Diciembre de 2006, 15:23:25 pm »
sorry por irme por las ramas pero q es tibia?