Foros del Web » Programando para Internet » PHP »

Cambiar tamaño, peso, de una imagen

Estas en el tema de Cambiar tamaño, peso, de una imagen en el foro de PHP en Foros del Web. Hola, hace tiempo me baje de aqui, un script que hizo Cluster para subir archivos a una base de datos. Subo las imagenes, y cuando ...
  #1 (permalink)  
Antiguo 10/06/2003, 10:40
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Cambiar tamaño, peso, de una imagen

Hola, hace tiempo me baje de aqui, un script que hizo Cluster para subir archivos a una base de datos. Subo las imagenes, y cuando las quiero visualizar las visualizo. Hasta ahi, ningun problema. El problema viene cuando quiero mostrar esa imagen de unas dimensiones mas pequeñas. Para mostrar la imagen pongo:

<img border="0" width="ancho" height="alto" src="imagen.php?valor=1">

Y me muestra la imagen del tamaño que le he dicho, pero sigue pensando los mismos KiloBytes. Hay alguna posibilidad de que al mostrar la imagen, no tenga que poner en el width y height las medidas de la imagen sino en el codigo php, y hacer que la imagen que se descargue ocupe lo que ocuparia esa misma imagen de un tamaño mas pequeño?

P.D: No se si se llego a tratar este tema despues de poner el codigo en la web, me suena que si pero me he vuelto loco buscando en el buscador y no lo encuentro
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #2 (permalink)  
Antiguo 10/06/2003, 11:06
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años
Puntos: 0
El html lo que hace es cambiar el tamaño de la imagen, pero el peso sigue siendo el mismo. Hablando claro lo que creo que debe hacer el html es crear un marco con la anchura y altura que tu le das, y la imagen se muestra dentro de ese marco con el tamaño del marco.

Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #3 (permalink)  
Antiguo 10/06/2003, 11:14
Avatar de Rnsto  
Fecha de Ingreso: marzo-2002
Ubicación: Puerto Vallarta, Mexico
Mensajes: 204
Antigüedad: 22 años, 1 mes
Puntos: 0
Lo que deseas, se puede hacer creando thumbails de las imagenes que son de medidas menores y tamaño menor que el original, busca scripts para galerias de imagenes y ahi seguro vas a encontrar lo que necesitas..

busca en los FAQ's del sitio por que estoy seguro de haber visto scripts para galerias...

Saludos
__________________
Saludos
Rnstho Luna
go2mexico.com
  #4 (permalink)  
Antiguo 10/06/2003, 12:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues en el mismo script que tomastes de ejemplo hice un script más para crear un "thumbnail" de la imagen original. Es decir .. crear una nueva imagen con el tamaño que determines desde la imagen original que tienes en tu BD .. Usa las librerías GD para tal fin.

Te recuerdo el link:
http://www.forosdelweb.com/showthrea...hreadid=127775

fijate en el script: ver_thumbnail.php

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 10/06/2003, 14:05
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Se que en el script que pusiste Cluster, justo abajo esta como hacer thumbnail, pero quisiera saber si se puede hacer de alguna otra manera. Y si no es asi, donde consigo las librerias, supongo que de la pagina de php, pero de que seccion y tal...
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #6 (permalink)  
Antiguo 10/06/2003, 14:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues un "redimensionado" de una imagen lo ideal es que uses esas librerias GD ... Entre otras cosas por qué esas librerias (con esas funciones) generas una nueva imagen partiendo de la original .. con el tamaño y "peso Bytes" Adecuados (e incluso si generas un .jpg .. con el nivel de compresión que especifiques ..)

No hay otra solución que usar alguna librería gráfica (sean las GD o ImageMagic (o si hay mas .. la que corresponda) .. Son más comunes las GD para PHP ..).

En el manual de PHP:
http://www.php.net/manual/en/ref.image.php

Ahí tienes la referencia oficial .. y los links hacia donde puedes bajarte dichas librerias .. (para Linux). Si usas windows .. tan sólo tienes que habilitar las php_gd.dll de tus extension = .. en tu php.ini ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 10/06/2003, 17:28
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Vale Cluster gracias, lo mirare, y si tengo dudas, ya vendre a molestar otro ratito :P
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #8 (permalink)  
Antiguo 11/06/2003, 17:34
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Cluster encontre las librerias para windows en http://www.desarrolloweb.com/articulos/396.php las instale y ya no me da problema de las librerias, el error me ke da ahora es este:
Código PHP:
<br />
<
b>Warning</b>:  imagesx(): supplied argument is not a valid Image resource in <b>d:webfotos-ircusersfoto.php</bon line <b>21</b><br />
<
br />
<
b>Warning</b>:  imagesy(): supplied argument is not a valid Image resource in <b>d:webfotos-ircusersfoto.php</bon line <b>22</b><br />
<
br />
<
b>Warning</b>:  Division by zero in <b>d:webfotos-ircusersfoto.php</bon line <b>25</b><br /> 
a ke se debe este error?
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #9 (permalink)  
Antiguo 11/06/2003, 18:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. y que código estás usando?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 11/06/2003, 18:30
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Estoy usando el que pusiste tu para hacer los thumbnails, pero importando yo a mi manera el archivo de la base de datos:

Código PHP:
header("Cache-Control: no-cache; must-revalidate");
header("Pragma: no-cache");

$conexion=mysql_connect("localhost","root","") or die ("no se ha podido conectar a la BD");
$result mysql_db_query("FoToS-iRC""SELECT * FROM bdnicks WHERE Valor='$v'");
$Mdb=mysql_fetch_array($result);
$imagen $Mdb['Foto'];

Header ("Content-type: image/jpeg");

$img imagecreatefromstring($imagen);

$picsize 123;
    
$new_w imagesx($src_img);
$new_h imagesy($src_img);

$aspect_ratio $new_h $new_w;
    
$new_w $picsize;
$new_h abs($new_w $aspect_ratio);

$dst_img imagecreate($new_w,$new_h);

imagecopyresized($dst_img,$img,0,0,0,0,$new_w,$new_h,imagesx($img),imagesy($img));

imagejpeg($dst_img,'',100); 
Si cambio el
$new_w = imagesx($src_img);
$new_h = imagesy($src_img);
por
$new_w = 118;
$new_h = 143;
que son las dimensiones ke tienen en realidad la imagen, me la abre del tamaño ese, pero... pierde colores, es norma eso? y se puede hacer algo para mantener los colores reales?
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #11 (permalink)  
Antiguo 11/06/2003, 18:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues .. resulta que el código original obtiene la imagen de un campo de la Base de datos que está en "binario":

$img = imagecreatefromstring($imagen);


Y tu tienes tu imagen en un "Path" .. así que en lugar de eso usa:

Código PHP:
$imgimagecreatefromjpeg($imagen); 
Que te lee la imagen de un archivo en tu servidor ...

Antes de cambiar cosas .. mira como funcionan sinó .. "al tuntún" no esperes que funcionen las cosas ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 11/06/2003, 18:48
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Sustituyendolo me da todos estos errores:

<br />
<b>Warning</b>: imagecreatefromjpeg: Unable to open 'ÿØÿà' for reading in <b>d:\web\fotos-irc\users\foto.php</b> on line <b>12</b><br />
<br />
<b>Warning</b>: imagesx(): supplied argument is not a valid Image resource in <b>d:\web\fotos-irc\users\foto.php</b> on line <b>16</b><br />
<br />
<b>Warning</b>: imagesy(): supplied argument is not a valid Image resource in <b>d:\web\fotos-irc\users\foto.php</b> on line <b>17</b><br />
<br />
<b>Warning</b>: Division by zero in <b>d:\web\fotos-irc\users\foto.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: imagesx(): supplied argument is not a valid Image resource in <b>d:\web\fotos-irc\users\foto.php</b> on line <b>26</b><br />
<br />
<b>Warning</b>: imagesy(): supplied argument is not a valid Image resource in <b>d:\web\fotos-irc\users\foto.php</b> on line <b>26</b><br />
<br />
<b>Warning</b>: imagecopyresized(): supplied argument is not a valid Image resource in <b>d:\web\fotos-irc\users\foto.php</b> on line <b>26</b><br />
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #13 (permalink)  
Antiguo 11/06/2003, 18:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero vamos a ver

que guardas en:
$imagen = $Mdb['Foto'];
?¿

La ruta de la imgen? .. la imagen en binario o que guardas? ..

Estás seguro que esa consulta te arroja ese registro y ese campo tiene el dato esperado? ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 11/06/2003, 19:03
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
En $imagen se guarda la imagen en binario :)

Si en vez de poner lo del thumbnail, pongo echo $imagen, me mostraria la imagen. Pero claro, me interesa el thumbnail ;)
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #15 (permalink)  
Antiguo 11/06/2003, 19:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues no sé que decirte .. El código original con las tablas usadas según el tutorial funciona correctamente ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #16 (permalink)  
Antiguo 11/06/2003, 19:17
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
pero las imagenes se ven con los colores reales, o cambian de color? es ke a mi me han cambiando de color :(
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #17 (permalink)  
Antiguo 11/06/2003, 20:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues se ven bien .. a todo esto que versión de las librerias GD usas? ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #18 (permalink)  
Antiguo 12/06/2003, 05:40
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
uso el ke tiene de defecto apache el php_gd.dll, aunke tengo x ahi para el php_gd2.dll. Es eso?
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #19 (permalink)  
Antiguo 12/06/2003, 10:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues si tienes php_gd2.dll pruebalo y nos comentas (yo uso php_gd.dll pero de PHP 4.3.x que integra la última versión de las GD ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #20 (permalink)  
Antiguo 12/06/2003, 11:18
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Cluster si tienes messenger me lo puedes decir x mensaje privado, enga ;)
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #21 (permalink)  
Antiguo 12/06/2003, 12:12
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Una vez que estes usando la libreria gd2, utiliza la funcion ImageCreatetruecolor para que te respete los colores.

Saludos!
__________________
Manoloweb
  #22 (permalink)  
Antiguo 12/06/2003, 13:19
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
ImageCreatetruecolor($imagen) ? y en ke posicion del codigo lo pongo, nada mas abrir la imagen?
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #23 (permalink)  
Antiguo 12/06/2003, 14:52
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Te paso un pedazo de código que yo uso en una aplicación para que te des una idea...

Código PHP:
    $img ImageCreateFromPNG $img_path);
    
$full_id ImageCreatetruecolor $ancho$alto);
    
ImageCopyResampled $full_id$img0,0,0,0$ancho$alto$ancho_orig$alto_orig);
    
$full ImageJPEG$full_id$nueva_img_path80 ); 
__________________
Manoloweb

Última edición por Manoloweb; 12/06/2003 a las 14:55
  #24 (permalink)  
Antiguo 12/06/2003, 15:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. pues tal vez mis pruebas los hice con imagenes de poca profundidad de color ..

Prueba como usa Manoloweb: En el código del tutorial ver_thumbnail.php (sólo funcionaría con GD versión 2.x en adelante .. ):

Código PHP:
// Se crea la mascara de la imagen nueva
    
$dst_img ImageCreateTrueColor($new_w,$new_h);

// Se copia y reajusta el nuevo tamaño en la nueva imagen.
     
imagecopyresampled($dst_img,$img,0,0,0,0,$new_w,$new_h,imagesx($img),imagesy($img)); 

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #25 (permalink)  
Antiguo 12/06/2003, 15:50
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Vale, gracias a los dos, el fallo es ke era ImageCreateTrueColor y no ImageCreate ;)
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #26 (permalink)  
Antiguo 12/06/2003, 16:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. "fallo" no es .. pues imagecreate es para GD 1.x y la del truecolor es para GD 2.x ...

Yo hice pruebas con imagenes de 256 colores o cosa así (tenia unas gif que usé como pruebas ..) he de ahí que no me diera cuenta (ademas de la falta de costumbre de usar las GD ..). Pero bueno .. ahí Manoloweb me "iluminó xD" y le pegue una revisada al manual de PHP otra vez ...

A todo esto ya modifiqué el mensaje (el del manual) y añadí la observación con el código que hay que modificar si usan GD 2.x ..

Gracias a todos.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #27 (permalink)  
Antiguo 12/06/2003, 16:41
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
ImageCreate es para GD1 o GD2, la situación es que crea un espacio en base a 256 colores (web safe)

ImageCreateTrueColor es para crear un espacio con capacidad de 16 bits de colores.

Ambas funciones estan disponibles a la vez en GD2, pero cada una tiene sus particulares usos. Puede deducirse un sacrificio en uso de recursos con truecolor cuando se trate de muchas imagenes o imagenes muy pesadas.

Saludos
__________________
Manoloweb
  #28 (permalink)  
Antiguo 12/06/2003, 16:53
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Cluster ya ke vas a editar el mensaje, añade la direccion de descarga del php_dg ke me diste a mi y esta http://www.desarrolloweb.com/articulos/396.php ke es para windows.
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #29 (permalink)  
Antiguo 12/06/2003, 17:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero mdk .. esa extensión en windows ya la tienes si te bajas el .zip de PHP .. sólo es habilitarla ..

En linux hay que "compliar" y bajarse las librerias ..

Así que .. si hay que poner "link" jeje lo podría al manual oficial de PHP ...

Si quieres añadirlo tu .. responde el mensaje y comenta que ahí ese sítio explican como instalarlo o las acotaciones que estimes oportunas ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #30 (permalink)  
Antiguo 12/06/2003, 17:04
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Como veas, pero si querieres ponlo, ya ke explica tb como activar la extension y tal, y yo x ejemplo no la tenia y me la tube ke bajar de ahi. :)

Por cierto... tienes messenger o no? xk no me llegaste a contestar... xD
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:05.