PHP genera y muestra una imagen en miniatura

Encontré y modifiqué un pequeño script php para generar miniaturas.

$src = (isset($_GET['file']) ? $_GET['file'] : "");
$width = (isset($_GET['maxwidth']) ? $_GET['maxwidth'] : 73);
$thname = "xxx";

$file_extension = substr($src, strrpos($src, '.')+1);

switch(strtolower($file_extension)) {
     case "gif": $content_type="image/gif"; break;
     case "png": $content_type="image/png"; break;
     case "bmp": $content_type="image/bmp"; break;
     case "jpeg":
     case "jpg": $content_type="image/jpg"; break;

     default: $content_type="image/png"; break;

}

if (list($width_orig, $height_orig, $type, $attr) = @getimagesize($src)) {
    $height = ($width / $width_orig) * $height_orig;
}

$tn = imagecreatetruecolor($width, $height) ;
$image = imagecreatefromjpeg($src) ;
imagecopyresampled($tn, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

imagejpeg($tn, './media/'.$thname.'.'.$file_extension, 90);

Genera y guarda miniaturas perfectamente.

¿Cómo puedo mostrar esas miniaturas sobre la marcha?

Intenté agregar esto al final de un script.

header('Content-Type: image/jpeg');
imagegd($image);

pero dice The image cannot be displayed because it contains errors. ¿Qué estoy haciendo mal?

preguntado el 31 de julio de 12 a las 12:07

Busque en el código fuente de la imagen usando un editor de texto; es probable que tenga un mensaje de error de PHP allí. -

Como dije: "Genera y guarda miniaturas perfectamente" -

Ah, entonces agregaste ese código a una página HTML. Eso no funcionará; deberá incrustar cada resultado en un <img> etiqueta. Puede mostrarlos sobre la marcha utilizando URI de DATOS, pero eso no funcionará bien en Internet Explorer, y en absoluto en versiones anteriores:

El espacio en blanco en la parte superior del script era el problema. Muchas gracias por tu esfuerzo -

3 Respuestas

En php, el método más simple es usar imagejpeg() función.

En una de mis soluciones, he creado miniaturas de imágenes usando esta función en la que puedo especificar la altura y el ancho.

A continuación se muestra el fragmento de código para el mismo:

<?php
/*www.ashishrevar.com*/
/*Function to create thumbnails*/
function make_thumb($src, $dest, $desired_width) {
  /* read the source image */
  $source_image = imagecreatefromjpeg($src);
  $width = imagesx($source_image);
  $height = imagesy($source_image);

  /* find the “desired height” of this thumbnail, relative to the desired width  */
  $desired_height = floor($height * ($desired_width / $width));

  /* create a new, “virtual” image */
  $virtual_image = imagecreatetruecolor($desired_width, $desired_height);

  /* copy source image at a resized size */
  imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);

  /* create the physical thumbnail image to its destination */
  imagejpeg($virtual_image, $dest);
}
make_thumb($src, $dest, $desired_width);
?>

respondido 25 mar '13, 02:03

Intente eliminar el cierre ?> al final del archivo y asegúrese de que no haya espacios en blanco en la parte superior del archivo. Todo lo que se necesita es una nueva línea y la imagen se romperá.

Respondido 31 Jul 12, 13:07

¡No puedo creerlo! Había un espacio en blanco en la parte superior del guión. Me siento avergonzado ahora :) - Goldie

http://php.net/manual/en/function.imagegd.php

header('Content-Type: image/jpeg');
imagegd($image);

Respondido 31 Jul 12, 12:07

sigue siendo el mismo error; The image cannot be displayed because it contains errors - Goldie

@Goldie entonces como dijo, busque en el código fuente de la imagen para ver qué está mal - Pekka

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.