一種簡單的實作方法
<?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=https://www.cnblogs.com/venchi/p/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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/499831.html
標籤:PHP
下一篇:3D human pose estimation in video with temporal convolutions and semi-supervised training 論文理解
