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="" />
旧版浏览器不支持,图像不会以这种方式缓存在客户端中,并且您网站的加载时间会急剧增加,因为所有缩略图都会使用代码加载
我正在尝试创建将由服务器创建的缩略图,然后输出到 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="" />
旧版浏览器不支持,图像不会以这种方式缓存在客户端中,并且您网站的加载时间会急剧增加,因为所有缩略图都会使用代码加载