Publicidad
Anotaciones reducidas
La vida en un día: Película de un día en la Tierra
La vida en un día -Life in a day- es una película hecha por los propios usuarios de Youtube, que durante el día 24 de Julio del 2010 grabaron las cosas que pasaban en su vida durante ese día, y el director Kevin McDonald ha reunido en forma de película de un día en la Tierra.
De una hora y media de duración, veremos todo tipo de escenas en todas las partes del mundo, con una emotiva visión del mundo real tanto con sus cosas bellas y buenas, como con la más cruda visión del ser humano y su realidad.
Video: Las posibilidades de Kinect
Cuando oímos hablar de Kinect, no podemos evitar pensar en un "simple" aparato de detección de movimientos para videojuegos, y en cierto modo es así.
Lo bueno es que Microsoft ha lanzado una SDK de Kinect para que los usuarios puedan crear aplicaciones que exploten las capacidades del dispositivo, dando lugar a miles de ideas.
El siguiente video es al fin y al cabo con fines publicitarios, pero nos da que pensar acerca de las aún sin explotar posibilidades de Kinect. Disfrutadlo.
A Space Journey: Una excursión por el espacio en un video HD
A mi personalmente me encanta ver imágenes y fotografías del espacio, ver planetas lejanos, nebulosas o constelaciones. Es por eso que quiero compartir con ustedes A Space Journey, una excursión por el espacio en un video HD de Youtube, acompañado por una buena música y una ingente cantidad de fotografías espaciales.
Realmente merece la pena ver el video en pantalla completa y seleccionando que se reproduzca a 720p para disfrutar más del mismo.
[A Space Journey: Una excursión por el espacio en un video HD]
La historia de los Exploradores Web
Desde prácticamente los comienzos de Internet los Exploradores Web o Navegadores web nos han acompañado, haciendo las veces de herramientas indispensables para una navegación que a cada año que pasa se hace más cómoda y más intuitiva.
En Testking encuentro una imágen que contiene un gran esquema de la historia de los Exploradores Web desde el primer Nescape en 1994 hasta los navegadores modernos de este año 2011.
Una imágen interesante para conocer cuál ha sido la evolución en éste área.
Mapa de vuelos mundiales en 24 horas [Video]
Interesante video donde se muestra un mapa de vuelos mundiales en 24 horas, siendo cada punto amarillo la representación de un avión. Viendo el video podemos apreciar el impresionante afluente de vuelos en Estados Unidos y Asia, pero sobre todo la gran cantidad de vuelos en Estados Unidos.
Últimos comentarios
Fans en Facebook de Ruta Relativa
Lo más comentado
Lo más visto
Post al azar
Min-height en IE6 (Internet Explorer 6)
Publicado por KeLDroX el día 11/12/2009Guardado en Desarrollo
DOMElement obtener Html (DOMElement to Html)
Publicado por KeLDroX el día 15/12/2009Guardado en Desarrollo,Php
VirtualBox como servidor #3: Cómo crear una máquina virtual
Publicado por KeLDroX el día 13/08/2010Guardado en Tutoriales
Batería USB como pulsera
Publicado por KeLDroX el día 10/12/2009Guardado en Gadgets,Geek
Un par de trucos para Google Talk
Publicado por sergiocius el día 30/11/2009Guardado en Google
El tratamiento de imágenes es algo que, tarde o temprano, los que desarrollamos páginas web tenemos que afrontar. En este caso vamos a proponeros una función que he desarrollado personalmente para redimensionar imágenes proporcionalmente y con tamaño fijo en PHP, más concretamente para crear thumbnails de imágenes de dimensiones proporcionales y pudiendo especificar un tamaño fijo.
Antes de mostrar el código para redimensionar imágenes proporcionalmente y con tamaño fijo en PHP, vamos a intentar explicar en qué consiste: En primer lugar tenemos una imágen de unas dimensiones cualquieras, en nuestro caso de 560x560px.

Ejemplo de imágen a redimensionar.
Pongámonos en el caso de que queremos crear un thumbnail de dicha imágen con unas dimensiones fijas de 160x100px. Nos sería imposible en principio redimensionarla de forma proporcional ya que las imagen original y el thumbnail tienen proporciones diferentes, con lo que u obtendríamos una imágen a 160x160px ó a 100x100px para que sea de tamaño proporcional.

Ejemplo de dos imágenes proporcionales.
En este caso, si queremos que la imágen final tenga un tamaño fijo lo ideal sería que el tamaño restante sea rellenado por un marco de color transparente. En este caso cogeríamos la imágen de 100x100px y le añadiríamos un marco a ambos lados de 30px en cada lado.

Ejemplo de imágen proporcional con tamaño fijo.
Una vez explicado este punto, pasamos a mostraros la función y a detallarla:
function createThumb($sImagen, $nWidth = false, $nHeight = false)
{
// Variables
$sNombre = null;
$sPath = null;
$sExt = null;
$aImage = null;
$aThumb = null;
$aImageMarco = null;
$ImTransparente = null;
$aSize = null;
$nWidthMarco = false;
$nWidthHeight = false;
$nX = false;
$nY = false;
// Obtenemos el nombre de la imagen
$sNombre = basename( $sImagen );
// Obtenemos la ruta especificada para buscar la imagen
$sPath = dirname( $sImagen ) . '/';
// Obtenemos la extension de la imagen
$sExt = mime_content_type( $sImagen );
// Creamos el directorio thumbs
if( ! is_dir( $sPath . 'thumbs/' ) )
@mkdir( $sPath . 'thumbs/', 0777, true ) or die( 'No se ha podido crear el directorio "' . $sPath . 'thumbs/".' );
// Creamos la imagen a partir del tipo
switch( $sExt )
{
// Imagen JPG
case 'image/jpeg':
$aImage = @imageCreateFromJpeg( $sImagen );
break;
// Imagen GIF
case 'image/gif':
$aImage = @imageCreateFromGif( $sImagen );
break;
// Imagen PNG
case 'image/png':
$aImage = @imageCreateFromPng( $sImagen );
break;
// Imagen BMP
case 'image/wbmp':
$aImage = @imageCreateFromWbmp( $sImagen );
break;
default:
return 'No se conoce el tipo de imagen enviado, por favor cambie el formato. Sólo se permiten imágenes *.jpg, *.gif, *.png ó *.bmp.';
break;
}
// Obtenemos el tamaño de la imagen original
$aSize = getImageSize( $sImagen );
// Calculamos las proporciones de la imagen //
// Obteniendo el alto (Recogiendo ancho y no alto)
if( $nWidth !== false && $nHeight === false )
$nHeight = round( ( $aSize[1] * $nWidth ) / $aSize[0] );
// Obteniendo el ancho (Recogiendo alto y no ancho)
elseif( $nWidth === false && $nHeight !== false )
$nWidth = round( ( $aSize[0] * $nHeight ) / $aSize[1] );
// Obteniendo proporciones (Recogiendo alto y ancho)
elseif( $nWidth !== false && $nHeight !== false )
{
// Guardamos las dimensiones del marco
$nWidthMarco = $nWidth;
$nHeightMarco = $nHeight;
// Si el ancho es mayor
if( $nWidth < $nHeight )
{
$nHeight = round( ( $aSize[1] * $nWidth ) / $aSize[0] );
$nX = 0;
$nY = round( ( $nHeightMarco - $nHeight ) / 2 );
}
// Si el alto es mayor
elseif( $nHeight < $nWidth )
{
$nWidth = round( ( $aSize[0] * $nHeight ) / $aSize[1] );
$nX = round( ( $nWidthMarco - $nWidth ) / 2 );;
$nY = 0;
}
}
// El ancho y el alto no se han enviado, informamos del error
elseif( $nWidth === false && $nHeight === false )
return 'No se ha especificado ningún valor para el ancho y el alto de la imágen.';
// La nueva imagen reescalada
$aThumb = imageCreateTrueColor( $nWidth, $nHeight );
// Reescalamos
imageCopyResampled( $aThumb, $aImage, 0, 0, 0, 0, $nWidth, $nHeight, $aSize[0], $aSize[1] );
// Si tenemos que crear el marco
if( $nWidthMarco !== false && $nHeightMarco !== false )
{
// El marco
$aImageMarco = imageCreateTrueColor( $nWidthMarco, $nHeightMarco );
// Establecemos la imagen de fondo transparente
imageAlphaBlending( $aImageMarco, false );
imageSaveAlpha( $aImageMarco, true );
// Establecemos el color transparente (negro)
$ImTransparente = imageColorAllocateAlpha( $aImageMarco, 0, 0, 0, 0xff/2 );
// Ponemos el fondo transparente
imageFilledRectangle( $aImageMarco, 0, 0, $nWidthMarco, $nHeightMarco, $ImTransparente );
// Combinamos las imagenes
imageCopyResampled( $aImageMarco, $aThumb, $nX, $nY, 0, 0, $nWidth, $nHeight, $nWidth, $nHeight );
// Cambiamos la instancia
$aThumb = $aImageMarco;
}
// Salvamos
imagePng( $aThumb, $sPath . 'thumbs/' . $sNombre );
// Liberamos
imageDestroy( $aImage );
imageDestroy( $aThumb );
return true;
}
La función puede recibir tres parámetros, siendo el primero la ruta de la imágen a redimensionar, el segundo sería el ancho que queremos darle y el tercero el alto. Si especificamos ambos parámetros, ancho y alto, la imágen se redimensionará a dicho tamaño fijo dándole un marco transparente. Si especificamos solo el ancho tendremos una imágen proporcional con respecto al ancho, en nuestro caso si especificamos que la imagen de 560x560px la queremos con un ancho de 160px, el resultado final tendrá unas dimensiones de 160x160px. De igual forma con el alto, si especificamos para la imágen de 560x560px un alto de 100px, el resultado final tendrá unas dimensiones de 100x100px. También cabe destacar que se creará automáticamente un directorio llamado “thumbs” y ahí se almacenarán las imágenes resultantes. Siéntete libre de cambiar el código a tu gusto.
Cualquier error o sugerencia en el código será bien recibida en los comentarios.
Artículos relacionados
Chevereto: Script gratuito de almacenamiento de imágenes
Publicado por sergiocius el día 13/08/2010Guardado en Javascript,Php,Web
Sobre sergiocius
Soy un desarrollador en entornos web y escritorio, entusiasta y amante de mi trabajo del que cada día espero aprender algo nuevo. Tengo una titulación de Técnico Superior en Desarrollo de Aplicaciones Informáticas y actualmente curso el primer año de Carrera Universitaria con el poco tiempo que me deja el trabajo. Fundé rutarelativa porque quiero que mi esfuerzo y tiempo invertidos en aprender y poner en práctica algo le resulte útil y fácil a otro usuario, del mismo modo que yo aprendo y ahorro tiempo con la ayuda de los demás.
no guarda nada. de hecho mi PHP dice que no esta definida la función: mime_content_type
Debe ser porque es PHP5.2 y ya esa función fue descontinuada
http://co.php.net/manual/es/function.mime-content-type.php
De otro lado no tengo claro como usar la función createThumb();
supongo que así:
$mifoto=”paisaje.jpg”;
createThumb($mifoto, 100, 100);
No se si eso es correcto.
Escribir comentario en Redimensionar imágen proporcionalmente y con tamaño fijo en PHP