[Pregunta]: ¿Por qué no se crea la imagen por medio de PHP?

Iniciado por Leguim, 24 Septiembre 2019, 05:55 AM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

Buenas noches,
estaba creando mi propio sistema de captchas y después de ver en blogs y vídeos hice lo siguiente: (Todos al menos los contenidos que pude ver se hace el sistema creando una imagen con php)
El problema es que no me muestra ninguna imagen,, solamente se queda toda la pantalla (ventana de la pagina) en negro con un cuadrito chiquito en el medio con borde blanco.
Intente de 1001 formas pero me sigue mostrando eso:

Código (php) [Seleccionar]

// Crear una imagen de 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 en la parte superior izquierda
imagestring($im, 5, 0, 0, 'Hello world!', $color_texto);

// Imprimir la imagen
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);





Mod: Temas sobre PHP van al subforo de PHP.

EdePC

Saludos,

- Ese PHP genera los bytes de la imagen en sí, no deberías de tener ningún otro contenido en dicho PHP ya que ese contenido pasaría a formar parte de los bytes de la imagen y esta se corrompería.

- Lo que tienes que hacer es tratar y llamar a tu PHP generador de imágenes como si fuera una imagen, por ejemplo:

index.php
Código (html5) [Seleccionar]
<p>Lorem ipsum dolor sit amet.</p>
<img src="mi_imagen.php">
<p>Consectetur adipisicing elit.</p>


mi_imagen.php
Código (php) [Seleccionar]
<?php
// Crear una imagen de 100*30
$im imagecreate(10030);

// Fondo blanco y texto azul
$fondo imagecolorallocate($im255255255);
$color_texto imagecolorallocate($im00255);

// Escribir la cadena en la parte superior izquierda
imagestring($im400'Hello world!'$color_texto);

// Imprimir la imagen
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);
?>

#!drvy

Cuando quieras debugear algo (ver los logs e intentar saber porque no funciona), recuerda que PHP tiene logs y tiene errores en pantalla.

Si imprimes phpinfo() verás donde se guarda el log de errores. Si imprimes en pantalla puedes verlos directamente según van sucediendo. En este caso, ves solo un recuadro pequeño porque ya le has pasado el header de contenido (content-type) y el navegador intenta renderizar una imagen, pero si quitas esa linea (13), podrás ver el código de la imagen y los posibles errores que se han generado.


Saludos

Leguim

#3
Gracias a los dos por responder,
EdePC: si ya lo había intentado así poniendo el src del archivo php, pero igual te muestra esa imagen cuando no encuentra la foto.

Dryv: Hice eso y me aparece esto:
Código (php) [Seleccionar]

�PNG  IHDRd��)�PLTE����x�<� pHYs���+dIDAT�c` f�c��dyl�&O����3O�=� ��٘��y��H�ۘy �s�x ��z^2ϰ ��ϙ�>y~���3*�f�(�M"~c�IEND�B`�


Voy a pasar estas dos capturas mejor:

Esta es sin el header


Y este vendría hacer lo del cuadro negro:


MOD: Imagenes ajustadas a lo permitido.