Foros del Web » Programando para Internet » PHP »

Problema con libreria GD

Estas en el tema de Problema con libreria GD en el foro de PHP en Foros del Web. Hola buenas, Hacia ya tiempo que no me pasaba por el subforo de php y vuelvo para preguntaros por un problema que tengo. El caso ...
  #1 (permalink)  
Antiguo 19/11/2006, 13:16
Avatar de limboings  
Fecha de Ingreso: enero-2005
Mensajes: 794
Antigüedad: 19 años, 3 meses
Puntos: 2
Problema con libreria GD

Hola buenas,

Hacia ya tiempo que no me pasaba por el subforo de php y vuelvo para preguntaros por un problema que tengo.

El caso es que ejecuto este script:
Código PHP:
<?php 
// Creamos la imagen 
$im imagecreate(200,200); 
 
// Definimos un color para el quesito 
$fondo imagecolorallocate ($im255,255,255); 
$rojo imagecolorallocate ($im255,0,0); 
$rojo_oscuro imagecolorallocate ($im150,0,0); 
 
// Dibujamos el efecto sombra 3D 
 
for ($i 0$i 10$i ++) 
 
imagefilledarc ($im100100+(10-$i), 200175045$rojo_oscuroIMG_ARC_PIE); 
 
// Dibujamos el quesito 
imagefilledarc ($im100100200175045$rojoIMG_ARC_PIE); 
 
// Enviamos la imagen 
header("Content-type: image/png"); 
imagepng($im); 
?>
En teoria esto deveria devolverme un "trozo de quesito" de los que se utilizan en las graficas de estadisticas y esas cosas..pero ami este codigo tan solo me devuelve un error de cabecera(no lo entiendo,ya que no envio otra cabecera antes..) y una seria de caracteres sin sentido alguno (por lo menos para mi),aqui os pongo el error que me devuelve el script anterior:

Cita:
Warning: Cannot modify header information
- headers already sent by (output started at
C:\wamp\www\SimuladorNBA\snba.php:2) in C:\wamp\www\SimuladorNBA\snba.php on line 20
Y aqui los caracteres que os comentaba:
Cita:
‰PNG IHDRÈÈÐ6F PLTEÿÿÿÿ-cÆÓjIDATxœí•KNÃ@[Y¡%÷asäSäì³ÁœÛÄ&ãéßCbƒ^íKêW+
"„B!„B!„ÿͳ…*¼âÊ®|âJ³.së2G±.s”öÅã)ÆO1ÆØÊźÌVÎÖe¶r 2.+¶²\†*g}Œ
§œô1ž2gÖ.s=sõ=³«è™]EÏ<¹ŠšÙWÔÌ/®¢f-ó‡¯h™EûÎ"eÌ\n2f®‘2f•1s½Fʐy•
!s¬™[¬3·Ð8f.
å9£2×è÷²ÐgŽ_RŽ™SJŸyJ)]æijHŸ¹ä”ÇÌ©ÆÒe®Iå!ó”yé2·¤ò“¹´[RÙ3ç•=sM+û¿Æ”{–…-sK6
–=sIÛ3#Ê=s~½l™õ[f`ý=34å;sÅ”%sCÖ¯—½7d½¬—Aëe½›²fF•y¶^Ö1WP¹ ë—ËÀ)3ð”ù2ؐ'\
!„òÇ| äÆQù³IEND®B`‚
Bueno hay esta todo lo que me devuelve el script que os puse..alguien sabe que ocurre??

Un Saludo y gracias de antemano!!
__________________
La chapucería de la esquina
  #2 (permalink)  
Antiguo 19/11/2006, 13:51
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
El error es que estas mandando una cabecera (header http) luego de haber mandado texto. Según el error, estás mandando texto en la línea 2 de C:\wamp\www\SimuladorNBA\snba.php

Los "caracteres sin sentido alguno" son la imagen misma. Como no se puede enviar la cabecera correcta (por el error anterior) el servidor manda la imagen con tipo mime de texto o de html, en vez de mandarla con tipo mime de imagen. Y por eso el navegador la interpreta como texto.

Los dos errores se solucionan si revisás qué es lo que está mandando el archivo C:\wamp\www\SimuladorNBA\snba.php en la línea 2 y lo evitás.


Saludos.
  #3 (permalink)  
Antiguo 19/11/2006, 15:50
Avatar de limboings  
Fecha de Ingreso: enero-2005
Mensajes: 794
Antigüedad: 19 años, 3 meses
Puntos: 2
Buenas,

Si,ya esta solucionado..Muchas gracias alvlin.Otra cosa,si necesito indicar dos cabeceras..como lo hago??por lo menos con Location solo me deja enviar una..no se con las demas si esta permitido,se me dara el caso de que deva hacerlo..

Por ultimo,necesito que despues de que se vea la imagen creada con GD,se ejcute codigo,ahora mismo me aparece la imagen pero el codigo que va despues no se ejecuta..tiene solucion?

Un Saludo y gracias!!
__________________
La chapucería de la esquina

Última edición por limboings; 19/11/2006 a las 16:17
  #4 (permalink)  
Antiguo 19/11/2006, 17:05
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Se pueden enviar las cabeceras que sean necesarias, aunque es probable que si usás location no necesites otra, ya que no se enviará "contenido" al navegador...

En cualquier caso, a menos que pongas un exit; después de location el script se seguirá ejecutando hasta el final antes de redireccionar

¿qué código estás ejecutando después de la imagen? no se ve en el que pegaste antes.
Tené en cuenta que si estás mandando una imagen, se interpretará como tal y cualquier texto posterior será visto por el navegador como parte de la imagen, y por lo tanto no se verá en la pantalla.


Saludos.
  #5 (permalink)  
Antiguo 19/11/2006, 17:46
Avatar de limboings  
Fecha de Ingreso: enero-2005
Mensajes: 794
Antigüedad: 19 años, 3 meses
Puntos: 2
Buenas,

El codigo es simple solo es un array y muestro algunos elementos,era para probar y ya he visto que no funciona.Como puedo hacer para crear la imagen y luego mostrarla junto a otro codigo??Hay forma de hacerlo??

Un Saludo y gracias!!
__________________
La chapucería de la esquina
  #6 (permalink)  
Antiguo 19/11/2006, 18:10
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
tendrías que incluir la imagen en una etiqueta <img> en otra página
algo como <img src="archivo.php?id=XXX" />
  #7 (permalink)  
Antiguo 19/11/2006, 18:42
Avatar de limboings  
Fecha de Ingreso: enero-2005
Mensajes: 794
Antigüedad: 19 años, 3 meses
Puntos: 2
y como guardo la imagen en el disco?
__________________
La chapucería de la esquina
  #8 (permalink)  
Antiguo 19/11/2006, 19:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Iniciado por limboings Ver Mensaje
y como guardo la imagen en el disco?
Todas las funciones de GD que generan la imagen .. como en tu caso:
imagepng($im);

Tienen un 2° parámetro que indica el nombre del archivo y ruta si lo quieres "guardar en disco".

El código que usas es para presentar la imagen "en línea" por eso usas header() .. defines ciertas cabeceras HTTP y por ende debes llamarlo desde otro código HTML y tag HTML de imagen como te comentaron.

Más info, revisa la sintax de:
www.php.net/imagepng

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 18:56.