|
Foros
Ecalar imagen
|
Autor
|
Fecha: 15 de Mayo del 2007 a las 10:17:55
Descripción: Ninguna
|
Sexo: Masculino
Edad: 21 años
Ubicación: Poza Rica, Veracruz
País:
Mensajes: 1260
|
Bueno, lo mejor sería hacerlo en php, y para ello existe la función getimagesize(); obviamente obtiene el tamaño de la imagen, y hasta el tipo.
Te daré un ejemplo:
Código PHP 
<?php
//Ancho limite para la imagen
$limite = 900;
$imagen = 'http://www.fondos10.net/data/media/5/big/angel_sexy-1024x768.jpg';
$datos = getimagesize($imagen);
if ($datos[0] > $limite) {
$datos[1] = $datos[1] * ($limite / $datos[0]);
$datos[0] = $limite;
}
echo '<img src="'.$imagen.'" width="'.$datos[0].'" height="'.$datos[1].'" alt="Ejemplo" />';
?>
Por cierto, este código php, asi como muchos otros, lo hice yo; fue el resultado de varias pruebas y cálculos matemáticos. Y lo digo porque esta muy bien hecho.
Y otra cosa, recuerda que te estoy diciendo como redimensionar una imagen con atributos html, pero obteniendo los datos requeridos en php. Lo digo, porque si vas a hacer vistas en miniatura, eso no es muy recomendable.
Sea lo que sea, el código te va a ser de gran ayuda, ya que si quieres crear vistas en miniatura en php, tendrias que saber como obtener los datos finales.
Sabes, no me gusta dar este tipo de respuestas, ya que no me gusta dar códigos que uso ó usaré en mi web, pero bueno; espero hagas buen uso de él.
Saludos
|
|
|
|
Autor
|
Fecha: 15 de Mayo del 2007 a las 16:26:00
Descripción: Ninguna
|
Sexo: Masculino
Edad: 21 años
Ubicación: Poza Rica, Veracruz
País:
Mensajes: 1260
|
En realidad $imagen contiene la ruta de accceso a la imagen, y esta puede ser absoluta o relativa. Al mismo tiempo puede ser otra variable.
No veo tu problema, solo es quitar la variable $imagen y reemplazar cualquier ocurrencia por la variable que almacena la url de la imagen en tu script.
Ejemplo?
Código PHP 
<?php
//Ancho limite para la imagen
$limite = 900;
$datos = getimagesize($row['imagen']);
if ($datos[0] > $limite) {
$datos[1] = $datos[1] * ($limite / $datos[0]);
$datos[0] = $limite;
}
echo '<img src="'.$row['imagen'].'" width="'.$datos[0].'" height="'.$datos[1].'" alt="Ejemplo" />';
?>
Ahora, otra cosa completamente diferente sería, escalar solo las imagenes subidas por el usuario, y las tuyas no, dependiendo esto tambien, de la ruta donde estan ubicadas. Es decir, suponiendo que tus imagenes esten en un directorio, y las imagenes de los usuarios en otro.
Tan simple como hacer algo asi:
Código PHP 
<?php
if (ereg('/files/', $imagen)) {
//Código de redimensión
}
?>
Si el directorio es el mismo siempre, entonces lo que tu pides estaría de más; o si no prentendías hacer nada de lo que comente, te recomendaría que me explicaras mejor, y que si tienes problemas adaptando el código a tu script, fueras más específico e incluso proporcionaras el código, o parte de él.
Saludos
|
|
|
|
Autor
|
Fecha: 15 de Mayo del 2007 a las 17:15:04
Descripción: Ninguna
|
Sexo: Masculino
País:
Mensajes: 126
|
a ver si ahora me explico mejor, cuando alguien sube una imagen demasiado grande, se rompe la pagina y no queda bien, lo he "solucionado" añadiendo en el viewer.php en la linea en la que muestra la imagen style="width:300px
Código 
<a href="<?php echo $path.$HTTP_GET_VARS['file']; ?>"><img src="<?php echo $path.$HTTP_GET_VARS['file']; ?>" alt="<?php echo $HTTP_GET_VARS['file']; ?>" title="<?php echo $HTTP_GET_VARS['file']; ?>" style="width:300px" /></a>
Para imagenes grandes queda solucionado el problema con esto, ejemplo :
Código 
http://www.cochesfera.com/viewer.php?file=o1mmi1qjgmqtwmgedzwg.jpg
Sin embargo cuando se sube una imagen de poca resolucion, tambien la escala poniendola a 300px, ejemplo:
Código 
http://www.cochesfera.com/viewer.php?file=tj1im5o2zmyvjmmxy2nn.gif
Lo que yo queria esque cuando se suba una imagen, se detecte que ancho tiene, si tiene mas de X ancho (500px por ejemplo) la deberá escalar para que no se rompa el diseño de la pagina, pero si es menor de X pixels (500px) no la escale. No quiero redimensionar, tan solo que se escale.
|
|
|
|
Autor
|
Fecha: 15 de Mayo del 2007 a las 19:01:33
Descripción: Ninguna
|
Sexo: Masculino
Edad: 21 años
Ubicación: Poza Rica, Veracruz
País:
Mensajes: 1260
|
Eso es precisamente lo que hace el código que te di... si se supera el ancho límite o máximo, la imagen se comienza a redimensionar, escalar o como gustes llamarlo. Pero es más complejo que lo que tu querias hacer.
Ejemplo, con lo que tu estas haciendo, las imagenes grandes se hubieran hecho anchas, pero hubieran mantenido su altura original; e igualmente tanto las imagenes grandes como pequeñas hubieran tenido el mismo ancho.
Mi código supera todas esas limitaciones...
Mira, el código modificado quedaria asi:
Código PHP 
<?php
//Ancho limite para la imagen
$limite = 900;
$datos = getimagesize($HTTP_GET_VARS['file']);
if ($datos[0] > $limite) {
$datos[1] = $datos[1] * ($limite / $datos[0]);
$datos[0] = $limite;
}
?>
<a href="<?php echo $path.$HTTP_GET_VARS['file']; ?>"><img src="<?php echo $path.$HTTP_GET_VARS['file']; ?>" alt="<?php echo $HTTP_GET_VARS['file']; ?>" title="<?php echo $HTTP_GET_VARS['file']; ?>" width="<?php echo $datos[0]; ?>" height="<?php echo $datos[1]; ?>" /></a>
|
|
|
|
Autor
|
Fecha: 15 de Mayo del 2007 a las 20:12:44
Descripción: Ninguna
|
Sexo: Masculino
País:
Mensajes: 126
|
muchas gracias por el codigo, lo he puesto como me has indicado (he definido la variable solo para el ancho) pero parece que redimensiona para todas las imagenes, sin importar la resolucion, lo puedes ver en los dos ejemplos de antes:
Código 
http://www.cochesfera.com/viewer.php?file=tj1im5o2zmyvjmmxy2nn.gif
http://www.cochesfera.com/viewer.php?file=mmolc0je2zjowvtjingo.jpg
Este es el codigo que he puesto:
Código 
<?php
//Ancho limite para la imagen
$limite = 500;
$ancho = 500;
$datos = getimagesize($HTTP_GET_VARS['file']);
if ($datos[0] > $limite) {
$datos[1] = $datos[1] * ($limite / $datos[0]);
$datos[0] = $limite;
}
?>
<a href="<?php echo $path.$HTTP_GET_VARS['file']; ?>"><img src="<?php echo $path.$HTTP_GET_VARS['file']; ?>" alt="<?php echo $HTTP_GET_VARS['file']; ?>" title="<?php echo $HTTP_GET_VARS['file']; ?>" width="<?php echo $ancho; ?>" /></a>
Que esta fallando? no lo entiendo...
|
|
|
|
Autor
|
Fecha: 15 de Mayo del 2007 a las 22:21:59
Descripción: Ninguna
|
Sexo: Masculino
Edad: 21 años
Ubicación: Poza Rica, Veracruz
País:
Mensajes: 1260
|
Tuve un pequeño error, la variable $ancho era $datos[0] y $alto era $datos[1]; otra cosa, no es por nada, pero no estas usando el código como te lo dí, al parecer tuviste problema con las medidas, pero en lugar de mejorarlo, empeoraste todo.
Introduciste la variable ancho, cuando ya estaba limite; quitaste el ancho y alto que tomaba desde la funcion getimagesize, y pusiste el ancho desde la variable ancho con un valor previamente definido... no, no, no. Estás haciendo lo mismo que antes, sino es que peor.
Prueba con este código:
Código PHP 
<?php
//Ancho limite para la imagen
$limite = 500;
$datos = getimagesize($HTTP_GET_VARS['file']);
if ($datos[0] > $limite) {
$datos[1] = $datos[1] * ($limite / $datos[0]);
$datos[0] = $limite;
}
?>
<a href="<?php echo $path.$HTTP_GET_VARS['file']; ?>"><img src="<?php echo $path.$HTTP_GET_VARS['file']; ?>" alt="<?php echo $HTTP_GET_VARS['file']; ?>" title="<?php echo $HTTP_GET_VARS['file']; ?>" width="<?php echo $datos[0]; ?>" height="<?php echo $datos[1]; ?>" /></a>
|
|
|
|
Autor
|
Fecha: 16 de Mayo del 2007 a las 18:46:13
Descripción: Ninguna
|
Sexo: Masculino
Edad: 21 años
Ubicación: Poza Rica, Veracruz
País:
Mensajes: 1260
|
No puede ser... mmm... demonios!!!! jajjaja. (conste que esto no me causa gracia, me gusta que las cosas salgan porque asi lo quiero, porque yo lo digo)
Te daré un ejemplo del código funcionando, es exactamente el mismo, pero con el siguiente código antes que todo.
Código PHP 
<?php
//EXTRA
if ($_GET['id'] == 1) {
$HTTP_GET_VARS['file'] = 'http://users.belgacom.net/bram.hmk/matrixB1024X768.jpg';
} elseif ($_GET['id'] == 2) {
$HTTP_GET_VARS['file'] = 'http://www.skinbase.org/files/archive/shots/155/My_Matrix(rainy).jpg';
}
//EXTRA
?>
La primera imagen mide 1024x768 y se redimensiona a 500 x375 pixeles. La url es:
http://www.zona-ocio.org/resize.php?id=1
La segunda imagen mide 300x295, y debido a que no sobrepasa el limite especificado, no es redimensionada. La url es:
http://www.zona-ocio.org/resize.php?id=2
Si le das click a la imagen, la verás en su tamaño original.
Como puedes ver, el código que te estoy dando esta funcionando, si a ti no te funciona es porque lo estas adaptando mal; dicho de otra forma, hay un error en tu código.
Cuando este tipo de cosas pasan, no me queda de otra que pedir el script... pasame el archivo que quieres modificar, no se si será por msn, correo, o lo subirás a algun lugar... yo lo revisaré, lo modificaré y si quieres estar conectado al msn mientras lo hago adelante.
Saludos
|
|
|
|