Foros del Web » Programación para mayores de 30 ;) » Programación General »

problemas con perl

Estas en el tema de problemas con perl en el foro de Programación General en Foros del Web. Hola, tengo un ejercicio en perl que genera una imagen en el navegador tras pasarle 3 variables: texto, color y tamaño. Tras estas variables genera ...
  #1 (permalink)  
Antiguo 10/05/2005, 10:20
 
Fecha de Ingreso: septiembre-2004
Ubicación: seomaker
Mensajes: 78
Antigüedad: 19 años, 7 meses
Puntos: 0
problemas con perl

Hola, tengo un ejercicio en perl que genera una imagen en el navegador tras pasarle 3 variables: texto, color y tamaño.
Tras estas variables genera una imagen, pero ahora necesito darle una nueva funcionalidad:
Generar una archivo PNG del tipo:
holamundo-rojo-5.png

Primero debe comprobar de que esa imagen existe,si es ciero mostrará esa imagen del directorio, y sino, creará esa imagen y la mostrará.

Tengo hecho esto:
codigo

Funciona al crear la imagen en el navegador pero no en el fichero, y además primero debe comprobar si ya existe una imagen igual.


En realidad el asunto a resolver se encuentra en las últimas 15 lineas de ese código... que es donde no consigo hacerlo.



Gracias

Saludos
  #2 (permalink)  
Antiguo 10/05/2005, 12:15
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Hola, disculpame que no te respondí por MP es que me envían muchos y es mejor por aquí ya que otro puede tener la misma problemática...

Para ver si la imagen existe podrías usar
Código:
if (-e "$NombreFichero"){
          &error('El archivo ya existe');
} else {
	   open (IMAGEN, ">$NombreFichero") || &error('Error...');
   	   binmode(IMAGEN);

	   print IMAGEN $im;
	   close (IMAGEN);                     
}
Ahora bien lo de la imagen te lo debería de crear, si no lo hace debe ser por la ruta de acceso erronea o porque el directorio en donde la querés guardar no permite que lo escriban...

Verificá bien esos detalles y avisame...

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 11/05/2005, 05:54
 
Fecha de Ingreso: septiembre-2004
Ubicación: seomaker
Mensajes: 78
Antigüedad: 19 años, 7 meses
Puntos: 0
el fichero ya lo crea perfectamente, pero al intentar abrirlo, sólo sale una X, como si no existiese el fichero... ¿a que puede ser debido?
__________________
Cómo hacer una página web
  #4 (permalink)  
Antiguo 11/05/2005, 06:14
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Pero cuando lo crea, suponete que vas al directorio y lo abris con el fireworks u otro aditor de PNG...te abre el fichero o está dañado ?

Porque si la imagen está OK y no te lo muestra es simplemente que tenés mal la dirección de la imagen (en el src del img)

Checkea eso

Saludos
__________________
Esteban Quintana
  #5 (permalink)  
Antiguo 11/05/2005, 06:47
 
Fecha de Ingreso: septiembre-2004
Ubicación: seomaker
Mensajes: 78
Antigüedad: 19 años, 7 meses
Puntos: 0
En Windows, al abrilo con Freehand, ImageReady de photoshop me dice que no es un archivo válido.

En Fedora (Linux) con diferentes visores tampoco, excepto si directamente hago doble clic sobre el fichero que me muestra una X.
__________________
Cómo hacer una página web
  #6 (permalink)  
Antiguo 11/05/2005, 07:55
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Entonces es que no te está guardando bien el archivo...Intenta con el código que aparece en esta faq que habla sobre como guardar imágenes...

http://www.forosdelweb.com/showpost....4&postcount=65

obviamente fijate lo que te interesa que es cuando abre el archivo y le envía la info, creo que no podés hacer un simple print IMAGEN $im;

quiedaría algo así
Código:
        open (IMAGEN, ">$NombreFichero") || die "No se pudo guardar la imagen";
        binmode(IMAGEN);
        while (my $bytesread = read($im, my $buffer, 1024)) {
              print IMAGEN $buffer;
        }
Intenta con eso y vemos...

Saludos
__________________
Esteban Quintana
  #7 (permalink)  
Antiguo 11/05/2005, 09:03
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 21 años
Puntos: 0
Hola:

Me parece que el error es el siguiente.

Debes de sustituir donde dice:

Código:
	$NombreFichero = "$var1-$var2-$var3.png";
	open (IMAGEN, ">$NombreFichero") || &error('Error...');
	binmode(IMAGEN);

	print IMAGEN $im;
	close (IMAGEN);
Por lo siguiente:

Código:
	$NombreFichero = "$var1-$var2-$var3.png";

	open (IMAGEN, ">$NombreFichero") || &error("Error: $!");
	binmode(IMAGEN);

	print IMAGEN $im->png;

	close (IMAGEN);
Lo habías hecho bien cuando lo imprimes en el navegador, se me hacer que se te olvidó hacerlo de nuevo. Lo que pasa es que al incluir el $im->png le indicas al módulo GD que quieres tu imagen de tipo PNG.

SALUDOS
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.
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 20:55.