PHP - ImageCreateFromJPEG() return 奇怪的代码

PHP - ImageCreateFromJPEG() return weird code

我正在尝试创建将由服务器创建的缩略图,然后输出到 HTML 供网站用户使用,但它 returns 奇怪的代码... 我的函数是:

function createthumbnail($n){
    list($width, $height) = getimagesize($n);
    $newheight = 100;
    $ratio = 100/$height;
    $newwidth = $width*$ratio;
    $im = imagecreatetruecolor($newwidth, $newheight);
    switch(exif_imagetype($n)){
    case "jpg":
        $foto_r = imagecreatefromjpg($n);
    break;
    case "png":
        $foto_r = imagecreatefrompng($n);
    break;
    case "bmp":
        $foto_r = imagecreatefromwbmp($n);
    break;
    default:
        $foto_r = imagecreatefromjpeg($n);
    }
    if(!$foto_r){
        $im = imagecreatetruecolor($newwidth, $newheight);
        $bgc = imagecolorallocate($im, 255, 255, 255);
        $tc  = imagecolorallocate($im, 0, 0, 0);
 imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
        imagestring($im, 1, 5, 5, 'Error loading ' . $n, $tc);
    }else{
        imagecopyresampled($im, $foto_r, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
        imagejpeg($im, null, 100);
    }
    return $foto_r;
}

这是一个奇怪的代码示例:

如果我没看错,那么您的脚本会为您的网页构建 html 并在一个 运行 中构建缩略图?大概是这样的吧?

<img src="<?php echo createthumbnail('path_to_the_image.jpeg'); ?>" alt="" />

缩略图必须是一个额外的文件,所以另一个 php 生成图像的脚本和图像 headers。

<img src="generatethumbnail.php?f=path_to_the_image.jpeg" alt="" />

还有一个 "dirty" 解决方案,可以将图像代码作为 base64 直接包含在您的 html 代码中 Embedding Base64 Images

示例:

<img src="data:image/jpeg;base64,<?php 
echo base64_encode(createthumbnail('path_to_the_image.jpeg')); 
?>" alt="" />

旧版浏览器不支持,图像不会以这种方式缓存在客户端中,并且您网站的加载时间会急剧增加,因为所有缩略图都会使用代码加载