一种简单的实现方法
<?php
//$file:图片地址
//Filetype: JPEG,PNG,GIF
$file = "test.jpeg";
$out_file = 'thumb_test.jpeg';
function thumb($file,$dw,$dh,$path){//这四个参数分别是1、要缩略的图片,2、画布的宽(也就是你要缩略的宽)3、画布的高(也就是你要缩略的高),4、保存路径)
//获取用户名图
$srcImg=getImg($file);//调用下面那个函数,实现根据图片类型来创建不同的图片画布
//获取原图的宽高
$infoSrc=getimagesize($file);//这个getimagesize()是php里面的系统函数用来获取图片的具体信息的
$sw=$infoSrc[0];//获取要缩略图片的宽
$sh=$infoSrc[1];//。。获取要缩略的图片的高
//创建缩略图画布
$destImg=imagecreatetruecolor($dw, $dh);
//为缩略图填充背景色
$bg=imagecolorallocate($destImg,250,250,250);
imagefill($destImg,0,0,$bg);
//计算例缩放的尺寸
if($dh/$dw>$sh/$sw){
$fw=$dw;
$fh=$sh/$sw*$fw;
}else{
$fh=$dh;
$fw=$fh*$sw/$sh;
}
//居中放置
$dx=($dw-$fw)/2;
$dy=($dh-$fh)/2;
//创建缩略图
imagecopyresampled($destImg, $srcImg, 0, 0, 0, 0 ,$fw, $fh,$sw, $sh);
$baseName='thumb_'.basename($file);//给缩略的图片命名,basename()是系统内置函数用来获取后缀名的
$savePath=$path;//设置缩略图片保存路径
imagejpeg($destImg,$savePath);//把缩略图存放到上一步设置的保存路径里
}
function getImg($file){//这是以一个动态创建图片画布的函数(根据具体的图片类型创相应类型的画布)
$info=getimagesize($file);
$fn=$info['mime'];//获得图片类型;
switch($fn){
case 'image/jpeg'://如果类型是imag/jpeg就创建jpeg类型的画布
$img=imagecreatefromjpeg($file);
break;
case 'image/gif':
$img=imagecreatefromgif($file);//如果类型是gif就创建gif类型的画布
case 'image/png':
$img=imagecreatefrompng($file);//如果类型是png就创建png类型的画布
break;
}
return $img;//返回画布类型
}
thumb($file,264,480,$out_file);
if($fp = fopen($out_file,"rb", 0))
{
$gambar = fread($fp,filesize($out_file));
fclose($fp);
$base64 = chunk_split(base64_encode($gambar));
// 输出
$encode = '<img src="data:image/jpg/png/gif;base64,' . $base64 .'" >';
echo base64_encode($gambar).PHP_EOL;
}
文章评论