Comunidad de diseño web y desarrollo en internet online

Redimensionar imagen

Citar            
MensajeEscrito el 26 Mar 2010 10:59 pm
Que onda mi gente de cristalab,

La idea es redimensionar las imagenes hacerlas mas pequeñas, tengo en una carpeta del sitio varias imagenes de grandes dimensiones, quisiera hacerlas pequeñas dinamicamente, he intentado algunas opciones pero ninguna me ha resultado, he revisado la documentacion de php pero tengo dos advertencias y no consigo visualizar la imagen redimensionada a ver si me hechan una mano. Les dejo el codigo

Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
<?php
$ruta="IMAGENES/Titulos/N3-01.png";
$nombre=basename($ruta);
$datos = getimagesize($ruta);
if($datos[2]==3){
   $img = @imagecreatefrompng("N3-01.png");
}

$alturadeseada=100;
$proporcion=$alturadeseada/$datos[1];
$altura2=$datos[1]*$proporcion;
$anchura2=$datos[0]*$proporcion;

$thumb=imagecreatetruecolor($anchura2,$altura2);
imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura2, $altura2, $datos[0], $datos[1]);
header("Content-type: image/png");
imagepng($thumb);
?>
<body>
</body>
</html>


:? Ni idea lo que este mal, me quede atorado

Por novaaavon

46 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 27 Mar 2010 01:07 pm
- Estás enviando un header después de haber enviado algo al navegador.
- Estás queriendo poner una imagen fuera del body del documento HTML.
- La imagen no se corresponde con ningún tag <img>

Hay muchos ejemplos de cómo crear miniaturas en PHP, busca "crear thumbs PHP" en Google.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 01 Abr 2010 01:41 am
Como van mi gente de cristalab, ya lo consegui buscando en el internet como me dijeron, ahora tengo un pequeño inconveniente, les cuento,... con este codigo

Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
<?php
   $nombre="C01-SYS.png";
   $camino="IMAGENES/Titulos/";
   $altura=125;
     // Lugar donde se guardarán los thumbnails respecto a la carpeta donde está la imagen "grande".
     $dir_thumb = "thumbs/";

     // Prefijo que se añadirá al nombre del thumbnail. Ejemplo: si la imagen grande fuera "imagen1.jpg",
     // el thumbnail se llamaría "tn_imagen1.jpg"
     $prefijo_thumb = "tn_";

     // Intentamos crear el directorio de thumbnails, si no existiera previamente.
     if (!file_exists($camino.$dir_thumb))
          mkdir ($camino.$dir_thumb, 0777) or die("No se ha podido crear el directorio $dir_thumb");

     // Aquí comprovamos que la imagen que queremos crear no exista previamente
if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$nombre)) {
          echo $camino.$dir_thumb.$prefijo_thumb.$nombre."NO existía";

//echo $camino.$nombre;
          $img = imagecreatefrompng($camino.$nombre) or die("No se encuentra la imagen $camino$nombre<br>n");

          // miramos el tamaño de la imagen original...
          $datos = getimagesize($camino.$nombre) or die("Problemas con $camino$nombre<br>n");

          // intentamos escalar la imagen original a la medida que nos interesa
          $ratio = ($datos[1] / $altura);
          $anchura = round($datos[0] / $ratio);

          // esta será la nueva imagen reescalada
          $thumb = imagecreatetruecolor($anchura,$altura);

          // con esta función la reescalamos
          imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);

          // voilà la salvamos con el nombre y en el lugar que nos interesa.
         imagepng($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre);
     }
?> 
<body>
</body>
</html>


Todo bien me genera un archivo png en la ruta designada, ahora mi pregunta, en vez de que se guarde en una ruta, quisiera poder visualizar esa imagen sin tener que guardarla, es algo que se me ocurre como seria.....

Investigue este es un ejemplo de php

Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<?php
// crear una imagen 100*30
$im = imagecreate(100, 30);

// fondo blanco y texto azul
$fondo = imagecolorallocate($im, 255, 255, 255);
$color_texto = imagecolorallocate($im, 0, 0, 255);

// escribir la cadena arriba a la izquierda
imagestring($im, 5, 0, 0, "¡Hola mundo!", $color_texto);

// producir la salida de la imagen
header("Content-type: image/png");
imagepng($im);
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body>


</body>
</html>


Pero no me funciona, salen unos caracteres medio raros, lo mismo me paso cuando lo probe en el codigo de generar las imagenes, alguien sabe la razon :cry:

Por novaaavon

46 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 01 Abr 2010 03:03 am
Estás cometiendo los mismos errores que ya señalé.

El código que genera la miniatura y en vez de guardarla en un archivo, la muestra directamente debes utilizarlo así:

Código PHP :

<img src="generarminuatura.php" alt="miniatura">


NO PUEDES usar la función header() cuando YA enviaste los headers en ese mismo script o página HTML.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.