Foros del Web » Programando para Internet » PHP »

Ayuda urgente y deseperada

Estas en el tema de Ayuda urgente y deseperada en el foro de PHP en Foros del Web. Hola a todos: Después de estar tres días histerica y probando de todo (hay que decir que soy novatilla) he conseguido qu eun codigo funcione, ...
  #1 (permalink)  
Antiguo 30/01/2007, 18:14
 
Fecha de Ingreso: diciembre-2006
Mensajes: 111
Antigüedad: 17 años, 4 meses
Puntos: 1
Ayuda urgente y deseperada

Hola a todos:
Después de estar tres días histerica y probando de todo (hay que decir que soy novatilla) he conseguido qu eun codigo funcione, es de hacer tumbnails, pero solo funciona en el mismo archivo cuando pongo los datos de la variables en la barra de direcciones, sin embargo si lo pongo dentro del acrhcivo no va, que es lo qu enecesito , ponerlo en otro archivo para que llame alas imagenes.
Como no sé si me explicado muy bien os dejo en codigo y el enlace a ver si me podeis ayudar, muchas gracias

Alejandra

<?php

$archivo = $_GET['archivo'];
$img_fuente = @imagecreatefromjpeg($archivo);

$img_ancho= imagesx($img_fuente);
$img_alto =imagesy($img_fuente);

$ancho = $_GET['ancho'];
$alto = $_GET['alto'];

$imagen = imagecreatetruecolor($ancho, $alto);

imagecopyresized($imagen, $img_fuente, 0, 0, 0, 0, $ancho, $alto, $img_ancho, $img_alto);

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

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

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

echo '<img src='.$archivo.'>';
echo '<img src="redimensionar.php?archivo=imag/creacionesgloria/CA00607.jpeg&ancho=63&alto=45">';

?>

y el enlace: hasiandasha.com/redimensionar2.php?archivo=imag/creacionesgloria/CA00607.jpeg&ancho=63&alto=45
  #2 (permalink)  
Antiguo 30/01/2007, 18:23
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Ayuda urgente y deseperada

Cita:
Iniciado por Alejandr4 Ver Mensaje
Header("Content-type: image/png");

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

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

echo '<img src='.$archivo.'>';
echo '<img src="redimensionar.php?
No se te ha entendido bien tu problema, eso de
Cita:
Iniciado por Alejandr4 Ver Mensaje
pero solo funciona en el mismo archivo cuando pongo los datos de la variables en la barra de direcciones, sin embargo si lo pongo dentro del acrhcivo no va, que es lo qu enecesito , ponerlo en otro archivo para que llame alas imagenes.
desde ya te digo que tu codigo tiene errores, por ejemplo, mandas tres headers diferentes donde dices que la respuesta sera una imagen, primero png, luego gif y dsps la cambias a jpeg, pero despues haces un echo, eso es enviar ujn header mas...

podrias explicar mejor, con mas detalle lo que sucede? manda el codigo de redimendionar.php y redimensionar2.php

Salu2
  #3 (permalink)  
Antiguo 30/01/2007, 18:51
 
Fecha de Ingreso: diciembre-2006
Mensajes: 111
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Ayuda urgente y deseperada

Ya suponía que no se me iba a entender miu bien,jeje!!

A ver os cuento, yo tengo el archivo redimensionar.php que lo que hace es precisamente eso dedimensionar imagenes. tengo otro que se llama producto.php y en el cual inserto lo siguiente: <img src="../redimensionar.php?archivo=imag/creacionesgloria/CA00607.jpeg&ancho=63&alto=45"> y se supone que en la celda donde pongo esto tiene que cargar dicha imagen pero redimesionada al tamañoq ue le digo. Estoy pasando las variables $archivo, $ancho y $alto. Bien en el archivo producto.php nbo va, no carga nada, sale el tipico cuadradito con la x roja.
Entonces lo que he hecho es ponerle un echo al mismo redimensionar.php para ver si funcionaba, y si pongo en la barra de direcciones la dirección al archivo junto con el valor de las variables, osea asi: hasiandasha.com/redimensionar2.php?archivo=imag/creacionesgloria/CA00607.jpeg&ancho=63&alto=45 , entonces si me carga la imagen. Lo que quiero decir con la frase que no me has entendido es eso, que si pongo los valores en la barrade direcciones si carga pero si llamo desde otro archivo para que pasen las variables entonces no va.
Redimensionar2 no es nada era lo mismo, uno con echo y otro sin. Te copio el codigo de nuevo.
A ver sipuedes ayudarme por favor, puedes entrar en el enlace que te he puesto y verás mejor lo que te digo, mirando el codigo fuente se ve la diferencia pero no se que hacer, ya he dicho que soy novata y estoy en este proyecto y no puedo seguir hasta queno arrgle esto.

Muchisismas gracias por la ayuda

<?php
$archivo = $_GET['archivo'];
$img_fuente = @imagecreatefromjpeg($archivo);

$img_ancho= imagesx($img_fuente);
$img_alto =imagesy($img_fuente);

$ancho = $_GET['ancho'];
$alto = $_GET['alto'];

$imagen = imagecreatetruecolor($ancho, $alto);

imagecopyresized($imagen, $img_fuente, 0, 0, 0, 0, $ancho, $alto, $img_ancho, $img_alto);

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

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

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

echo '<img src='.$archivo.'>';
echo '<img src="redimensionar.php?archivo=imag/creacionesgloria/CA00607.jpeg&ancho=63&alto=45">';

?>
  #4 (permalink)  
Antiguo 30/01/2007, 19:00
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Ayuda urgente y deseperada

Hola de nuevo,

veamos, hice algunos arreglos a tu codigo, asi deberia funcionar bien. Tu archivo redimensionar.php seria algo asi:

Código PHP:
<?php
//Si no se ha especificado el archivo
if(empty($_GET['archivo'])) {
echo 
'No se especifico la ruta';
exit;
}
 
//Si no se ha especificado el archivo
if(empty($_GET['alto'])) {
echo 
'No se especifico el nuevo alto de la imagen';
exit;
}
 
//Si no se ha especificado el archivo
if(empty($_GET['ancho'])) {
echo 
'No se especifico el nuevo ancho de la imagen';
exit;
}
 
$archivo $_GET['archivo'];
 
//Averiguamos la extension del archivo, porque de eso van a depender las funciones a usar
$extension explode('.',$archivo);
$extension $extension[count($extension)-1];
 
//Escoger la funcion. Usamos la funcion switch
switch($extension) {
case 
'jpg':
$f1 "imagecreatefromjpeg";
$f2 "imageJpeg";
$type "jpeg";
break;
case 
'gif':
$f1 "imagecreatefromgif";
$f2 "imageGif";
$type "gif";
break;
case 
'png':
$f1 "imagecreatefrompng";
$f2 "imagePng";
$type "png";
break;
default:
echo 
'Error, tipo desconocido de archivo: '.$extension;
exit;
}
 
$img_fuente = @$f1($archivo);
$img_anchoimagesx($img_fuente);
$img_alto =imagesy($img_fuente);
$ancho $_GET['ancho'];
$alto $_GET['alto'];
$imagen imagecreate($ancho$alto);
imagecopyresized($imagen$img_fuente0000$ancho$alto$img_ancho
$img_alto);
Header("Content-type: image/$type");
$f2($imagen);
?>
Como veras, tiene mucho que ver el tipo de imagen (gif, jpeg, png).
Espero te sirva

Salu2
  #5 (permalink)  
Antiguo 30/01/2007, 19:21
 
Fecha de Ingreso: diciembre-2006
Mensajes: 111
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Ayuda urgente y deseperada

Por dios!!!!!! FUNCIONA!!!!! No me lo puedo creer!!! Lo que hace saber,yo llevo tres días y tu lo has hecho en 5 minutos, que fuerte!!! Jejejejeje!! Pero hay una cosa que es diferente y te lo comento aver sime lo puedes arreglar, a ver si me sé explicar esta vez,jejeje!! Verás en los códigos que yo he utilizado para hacer tumbnails el ancho y el alto que les das son el máximo que pueden coger pero se mantiene la proporción, esto quiere decir que si por ejemplo tu tienes una imagene de 200 x 100 y le das al codigo unas medidas de 100x100 lo que hace es combertirla en 100 x 50, nos é si me entiendes, porque es para que estén en una celda de eses tamaño pero va acrgar imagenes de una base de dator por lo tanto no sirve unamedida para todas las imagenes, tiene que ser un alto y un ancho máximo pero guardando las proporciones, y si la imagene es mas pequeña la deja taly como está. Y eso lo hacía el anterior codigo, aunque no funcionara bien, que para le caso es como si nada,jejeje!! Me puedes ayudar por favor???

Mil gracias de verdad por loq ue me cabas de ayudar
  #6 (permalink)  
Antiguo 30/01/2007, 19:55
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Ayuda urgente y deseperada

Hola,

bien creo q deberia qdar asi, no lo probe mucho pero debe funcionar:

Código PHP:
<?php
//Si no se ha especificado el archivo
if(empty($_GET['archivo'])) {
echo 
'No se especifico la ruta';
exit;
}
 
//Si no se ha especificado el archivo
if(empty($_GET['alto'])) {
echo 
'No se especifico el nuevo alto de la imagen';
exit;
}
 
//Si no se ha especificado el archivo
if(empty($_GET['ancho'])) {
echo 
'No se especifico el nuevo ancho de la imagen';
exit;
}
 
$archivo $_GET['archivo'];
 
//Averiguamos la extension del archivo, porque de eso van a depender las funciones a usar
$extension pathinfo($archivo);
$extension $extension['extension'];
 
//Escoger la funcion. Usamos la funcion switch
switch($extension) {
case 
'jpg':
$f1 "imagecreatefromjpeg";
$f2 "imageJpeg";
$type "jpeg";
break;
case 
'gif':
$f1 "imagecreatefromgif";
$f2 "imageGif";
$type "gif";
break;
case 
'png':
$f1 "imagecreatefrompng";
$f2 "imagePng";
$type "png";
break;
default:
echo 
'Error, tipo desconocido de archivo: '.$extension;
exit;
}
 
$img_fuente = @$f1($archivo);
//Dimensiones
$img_anchoimagesx($img_fuente);
$img_alto =imagesy($img_fuente);
$ancho $_GET['ancho'];
$alto $_GET['alto'];
$diferencia_ancho $img_ancho/$ancho;
$diferencia_alto $img_alto/$alto;
if(
$diferencia_ancho $diferencia_alto) {
$nuevo_ancho $ancho;
$prop $nuevo_ancho/$img_ancho;
$nuevo_alto round($img_alto*$prop);
} else {
$nuevo_alto $alto;
$prop $nuevo_alto/$img_alto;
$nuevo_ancho round($img_ancho*$prop);
}
 
$imagen imagecreate($nuevo_ancho$nuevo_alto);
imagecopyresized($imagen$img_fuente0000$nuevo_ancho$nuevo_alto$img_ancho$img_alto);
Header("Content-type: image/$type");
$f2($imagen);
?>
Pruebalo y me comentas

Salu2

Última edición por okram; 25/08/2007 a las 18:32
  #7 (permalink)  
Antiguo 30/01/2007, 20:15
 
Fecha de Ingreso: diciembre-2006
Mensajes: 111
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Ayuda urgente y deseperada

Gracias por tu ayuda, muchas gracias de verdad, este ultimo no funciona, sigue poniendo las medidas que le das, no guarda las proporciones, pero bueno no se pero podría hacer algo¿no? Que todas las imagenes tengan las misma medidas, no se.. a ver, de todas formas muchas gracias por tu ayuda de verdad
Un saludo
Alejandra
  #8 (permalink)  
Antiguo 30/01/2007, 20:55
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Ayuda urgente y deseperada

Estas segura?...

Lo he probado de mil maneras y si funciona, velo tu misma:

http://www.myokram.info/redimensiona...=100&ancho=100
Imagen.jpg tiene como dimensiones 300x400

http://www.myokram.info/redimensiona...=100&ancho=100
doodle_alien2.gif tiene como dimensiones 337x130

http://www.myokram.info/redimensiona...=100&ancho=100
mdw.png tiene como dimensiones 178x114

Revisa todos esos links, y veras que los redimensiona proporcionalmente... ninguno se desfigura... podrias pasarme el link donde tienes tus paginas con el codigo q t mande? y tambien el de las imagenes que quieres redimensionar?

Cuando uno esta aprendiendo no debe rendirse hasta que salga, asi que comentame como va

Salu2
  #9 (permalink)  
Antiguo 30/01/2007, 21:03
 
Fecha de Ingreso: diciembre-2006
Mensajes: 111
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Ayuda urgente y deseperada

UY pues ami si se me desproporciona, bueno como no puedo poner links todavia te los escribo sin los http ni las w ¿ok?

El codigo:
hasiandasha.com/redimensionar.php

Un ejemplo con imagen:
hasiandasha.com/redimensionar.php?archivo=imag/creacionesgloria/CA00607.jpg&ancho=100&alto=300

Muchisimas gracias por tu ayuda.
Un saludo
  #10 (permalink)  
Antiguo 30/01/2007, 21:16
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Ayuda urgente y deseperada

Pues el problema esta en el codigo:

http://www.myokram.info/redimensiona...=300&ancho=100

Ahi esta tu imagen bien redimensionada

Mira, despues de

//Dimensiones
$img_ancho= imagesx($img_fuente);
$img_alto =imagesy($img_fuente);
$ancho = $_GET['ancho'];
$alto = $_GET['alto'];
$diferencia_ancho = $img_ancho/$ancho;
$diferencia_alto = $img_alto/$alto;

antes del if, coloca
Código PHP:
echo "$img_ancho $img_alto $ancho $alto $diferencia_ancho $diferencia_alto";
exit; 
Y me mandas el resultado

Salu2
  #11 (permalink)  
Antiguo 31/01/2007, 08:52
 
Fecha de Ingreso: diciembre-2006
Mensajes: 111
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Ayuda urgente y deseperada

Hola de nuevo:

Ya lo he colocado y nada sigue igual, la imagen sigue deformándose. Pues no entiendo que fallo puede ser porque he copiado y pegado tu código, tengo que cambiar algún dato que no me haya dado cuenta? Sino no se que puede ser
  #12 (permalink)  
Antiguo 01/02/2007, 18:06
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Ayuda urgente y deseperada

Veamos...

crea un archivo con el nombre codigo.php, y colocas esto:

Código PHP:
<?php
highlight_file
('redimensionar.php');
?>
y lo colocas en el mismo directorio que el archivo redimensionar.php... Esto no va a solucionar el problema, pero me permitirá ver el codigo que estas usando, ya que como te digo deberia funcionar bien, no se que pasa

Salu2
  #13 (permalink)  
Antiguo 07/02/2007, 20:07
 
Fecha de Ingreso: diciembre-2006
Mensajes: 111
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Ayuda urgente y deseperada

Ya está, la dirección es: hasiandasha.com/codigo.php
De momento lo había solucionado poniendo porcentajes pero me gustaría que funcionara de la otra forma, muchas gracias por la ayuda
  #14 (permalink)  
Antiguo 08/02/2007, 07:51
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Ayuda urgente y deseperada

Listo, ya se cual es el error... No aplicaste los ultimos cambios que te dije.

Has esto, en el archivo redimensionar.php:

Busca las lineas

Código PHP:
$img_fuente = @$f1($archivo);
$img_anchoimagesx($img_fuente);
$img_alto =imagesy($img_fuente);
$ancho $_GET['ancho'];
$alto $_GET['alto'];
$imagen imagecreatetruecolor($ancho$alto);
imagecopyresized($imagen$img_fuente0000$ancho$alto$img_ancho$img_alto); 


y las reemplazas por:

Código PHP:
$img_fuente = @$f1($archivo);
//Dimensiones
$img_anchoimagesx($img_fuente);
$img_alto =imagesy($img_fuente);
$ancho $_GET['ancho'];
$alto $_GET['alto'];
$diferencia_ancho $img_ancho/$ancho;
$diferencia_alto $img_alto/$alto;
if(
$diferencia_ancho $diferencia_alto) {
$nuevo_ancho $ancho;
$prop $nuevo_ancho/$img_ancho;
$nuevo_alto round($img_alto*$prop);
} else {
$nuevo_alto $alto;
$prop $nuevo_alto/$img_alto;
$nuevo_ancho round($img_ancho*$prop);
}
 
$imagen imagecreate($nuevo_ancho$nuevo_alto);
imagecopyresampled($imagen$img_fuente0000$ancho$alto$img_ancho$img_alto); 

Con ese cambio debería funcionar bien ahora. Compara tu codigo con el que yo estoy usando y que es el ultimo que te puse:

http://hasiandasha.com/codigo.php -> Este es el tuyo
http://www.myokram.info/codigo.php -> Este es el mio

Edita esas lineas y va a funcionar bien. Comentame si tienes algun problema

Salu2
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 11:37.