ratio - Usando encabezado(''Content-type: image/png'') y echo "<html>" en uno.php
textarea no resizable html (3)
Quiero usar imagecreatefromjpeg
, imagecreatetruecolor
, imagecopyresized
e imagejpeg
mientras imagejpeg
uso del echo "<html><body>";
etc ...
Por alguna razón, me "The image could not be displayed because there were errors on the page"
hasta que comencé el header(''Content-type: image/png'');
y luego me acabo de dar una foto de una imagen rota, como una página rasgada.
Todo lo que he visto es que no puedo tener header(''Content-type: image/png'');
y html en el mismo archivo .php. Si ese es el caso, ¿alguien me puede decir cómo cambiar el tamaño de una imagen para una galería de miniaturas mientras todavía tengo html en un archivo .php?
Gracias por adelantado.
Lo que has visto es correcto: no puedes tener un archivo con Content-type: image/png
que contenga contenido html. El navegador interpretará el código html como datos html codificados, lo cual es incorrecto.
Lo que debe hacer es dejar el tipo de contenido como text/html
y enviar la imagen en un documento html, como en mi ejemplo a continuación. Dejé el <head>
por simplicidad, pero deberías agregar uno.
<!DOCTYPE html>
<html>
<body>
<img src="myimage.png" width="100" height="100" />
</body>
</html>
No puede tener marcado dentro de la imagen que desea presionar hacia abajo en el navegador. Le está diciendo al navegador que espere una imagen y luego envíe un margen de beneficio, eso es un no-no.
Lo que podemos hacer es incluir un archivo .php que use tus funciones imagecreatetruecolor
, etc ... dentro de algunas etiquetas img
:
<html>
<head><title>Image Test</title></head>
<body>
<img src="image.php?file=A" />
<img src="image.php?file=B" />
</body>
</html>
Entonces image.php
usaría nuestros encabezados image/jpeg
y contendría su código imagecreatefromjpeg
.
<?
header(''Content-Type: image/jpeg'');
if ($_GET[''file''] == ''A'') {
$img = imagecreatefromjpeg(''image1.jpg'');
} elseif ($_GET[''file''] == ''B'') {
$img = imagecreatefromjpeg(''image2.jpg'');
}
// do your modification etc... here
imagejpeg($img);
imagedestroy($img);
Solo puede generar "código de imagen" en su archivo image.php
porque el navegador lo va a tratar como si fuera un jpeg regular.
Estás mezclando dos cosas diferentes.
Una página web con una imagen, no contiene esa imagen en general. En cambio, a menudo se refiere a una fuente externa. Dije en general , porque sí, una imagen se puede incrustar en una página HTML, ver abajo.
Tienes dos opciones:
Puede crear un archivo PHP aparte donde crea la imagen y genera sus bytes. En su código HTML, se refiere a esa imagen:
page.html :
<html> <body> <img src="myimage.php" alt="" /> </body> </html>
myimage.php :
<?php header("Content-Type: image/png"); createimageandso_on(); // Do the drawing. ?>
O puede incrustar la imagen en su archivo HTML, utilizando la codificación base64:
<?php $contents = all_bytes_from_created_image(); // Get the bytes from the created image. $base64 = base64_encode($contents); ?> <html> <body> <img src="data:image/png;base64,<?php echo $base64; ?>" alt="" /> </body> </html>
La segunda opción es adecuada para imágenes más pequeñas, ya que la cadena codificada en base64 producirá grandes porciones de texto.
Editar
Si lo entiendo correctamente, ¿quiere leer imágenes de un directorio y cambiar su tamaño al mismo tamaño, usándolas como miniaturas?
Lo que podría querer hacer es crear un archivo PHP donde lea una imagen de origen y darles el mismo tamaño.
Al igual que los archivos PHP ''normales'', PHP puede hacer algo con los parámetros de solicitud que usted brinda. Quizás hayas visto esto:
http://example.com/somepage.php?key=value&anotherkey=anothervalue
Esa cadena detrás del signo de interrogación ( key=value&anotherkey=anothervalue
) es la cadena de consulta. PHP puede hacer algo con los valores:
<?php
echo $_GET[''key'']; // returns "value"
echo $_GET[''anotherkey'']; // returns "anothervalue"
?>
Ahora podemos hacer lo mismo al crear una imagen. No tiene que hacer veinte archivos PHP con casi el mismo código, sino solo un archivo que lee un archivo (lo que quiera) y lo cambia al ancho especificado (lo que quiera) y al alto (lo que quiera).
thumbnail.php
<?php
// Get some request parameters we''re going to use.
// We''re expecting the parameters below to exist.
$file = $_GET[''filepath''];
$width = $_GET[''width''];
$height = $_GET[''height''];
// Now we''re gonna create the image from the given file.
$src = imagecreatefromjpeg($file);
imagecreatetruecolor($width, $height);
// And the rest of the file reading and image creation.
header("Content-Type: image/jpeg");
imagejpeg($image);
?>
webpage.html
<html>
<body>
<?php
$width = 100;
$height = 100;
$files = read_some_directory_and_return_a_list_of_filenames();
foreach ($files as $file) {
// Echo an image tag in the HTML document;
// use as image our thumbnail.php file and give it a query string:
echo "<img src=/"thumbnail.php?width=".$width."&height=".$height."&filepath=".$file."/" alt=/"/" />";
}
?>
</body>
</html>