$image="data:image/jpeg;base64,/….G7ht8DOCViCz3FzLhDLUw58f/Z"; // base64案例
$imageName = "base64".date("YmdHis",time())."_".rand(1111,9999).'.png'; //设置生成的图片名字
if (strstr($image,",")){ //判断是否有逗号 如果有就截取后半部分
$image = explode(',',$image);
$image = $image[1];
}
$path = "./".date("Ymd",time()); //设置图片保存路径
if (!is_dir($path)){ //判断目录是否存在 不存在就创建 并赋予777权限
mkdir($path,0777,true);
}
$imageSrc= $path."/". $imageName; //拼接路径和图片名称
$r = file_put_contents($imageSrc, base64_decode($image));//生成图片 返回的是字节数
if (!$r) { //判断图片是否生成成功
$tmparr1=array('data'=>null,"code"=>1,"msg"=>"图片生成失败");
echo json_encode($tmparr1);
}else{
$tmparr2=array('data'=>1,"code"=>0,"msg"=>"图片生成成功");
echo json_encode($tmparr2);
}
博客
-
PHP实现将base64编码字符串转换成图片
-
php获取本年、本月、本周时间戳和日期
设置时区
date_default_timezone_set("Asia/Shanghai"); date_default_timezone_set('PRC');//这两种方法效果相同时间戳转日期,可以用
date(‘Y-m-s h:i:s’, 具体时间戳来实现)
日期转换时间戳,用strtotime("date()").时间戳格式
//获取今日开始时间戳和结束时间戳 $beginToday=mktime(0,0,0,date('m'),date('d'),date('Y')); $endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1; //获取昨日起始时间戳和结束时间戳 $beginYesterday=mktime(0,0,0,date('m'),date('d')-1,date('Y')); $endYesterday=mktime(0,0,0,date('m'),date('d'),date('Y'))-1; //获取本周起始时间戳和结束时间戳 $beginThisweek = mktime(0,0,0,date('m'),date('d')-date('w')+1,date('y')); $endThisweek=time(); //获取上周起始时间戳和结束时间戳 $beginLastweek=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y')); $endLastweek=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y')); //获取本月起始时间戳和结束时间戳 $beginThismonth=mktime(0,0,0,date('m'),1,date('Y')); $endThismonth=mktime(23,59,59,date('m'),date('t'),date('Y')); //上个月的起始时间: $begin_time = strtotime(date('Y-m-01 00:00:00',strtotime('-1 month'))); $end_time = strtotime(date("Y-m-d 23:59:59", strtotime(-date('d').'day'))); $begin_year = strtotime(date("Y",time())."-1"."-1"); //本年开始 $end_year = strtotime(date("Y",time())."-12"."-31"); //本年结束 //现在的时间到第二天凌晨相差的时间戳 $time = (strtotime(date('Y-m-d'))+3600*24) - time() ;日期格式
echo '<br>上周起始时间:<br>'; echo date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1-7,date("Y"))),"\n"; echo date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7-7,date("Y"))),"\n"; echo '<br>本周起始时间:<br>'; echo date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1,date("Y"))),"\n"; echo date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7,date("Y"))),"\n"; echo '<br>上月起始时间:<br>'; echo date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m")-1,1,date("Y"))),"\n"; echo date("Y-m-d H:i:s",mktime(23,59,59,date("m") ,0,date("Y"))),"\n"; echo '<br>本月起始时间:<br>'; echo date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),1,date("Y"))),"\n"; echo date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("t"),date("Y"))),"\n"; //本年起始 echo date(‘Y-01-01’); //结束日期 echo date(‘Y-12-31’); -
php怎么输出当前版本号
php输出当前版本号的方法:
1、创建一个PHP示例文件;然后输入内容“phpinfo();”;最后执行该文件即可通过前台访问查看当前的PHP版本信息。
2、echo '当前PHP版本: ' . phpversion() . "\n";当前PHP版本: 7.4.3
-
Array and string offset access syntax with curly braces is deprecated原因
Array and string offset access syntax with curly braces is deprecated
PHP7.4不再支持使用大括号访问数组以及字符串的偏移_PHP代码
php7.4不支持数组{}写法,统一为数组[]
解决办法:
seq = ( ord (seq = (ord(seq=(ord(value{0}) % $rule[‘num’]) + 1;中的value{0}改为value[0]
————————————————
版权声明:本文为CSDN博主「出门要带伞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45467142/article/details/105982739 -
PhpExcel中文帮助手册|PhpExcel使用方法
PhpExcel中文帮助手册|PhpExcel使用方法程序代码如下:下面是总结的几个使用方法 include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; //或者include 'PHPExcel/Writer/Excel5.php'; 用于输出.xls的创建一个excel $objPHPExcel = new PHPExcel(); 保存excel—2007格式$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); //或者$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 非2007格式 $objWriter->save("xxx.xlsx"); 直接输出到浏览器 $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); header("Pragma: public");header("Expires: 0″); header("Cache-Control:must-revalidate, post-check=0, pre-check=0″); header("Content-Type:application/force-download"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/octet-stream"); header("Content-Type:application/download");; header('Content-Disposition:attachment;filename="resume.xls"'); header("Content-Transfer-Encoding:binary"); $objWriter->save('php://output'); ——————————————————————————————————————– 设置excel的属性: 创建人 $objPHPExcel->getProperties()->setCreator("Maarten Balliauw"); 最后修改人 $objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw"); 标题 $objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document"); 题目 $objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document"); 描述 $objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX,generated using PHP classes."); 关键字 $objPHPExcel->getProperties()->setKeywords("office 2007 openxml php"); 种类 $objPHPExcel->getProperties()->setCategory("Test result file"); ——————————————————————————————————————– 设置当前的sheet $objPHPExcel->setActiveSheetIndex(0); 设置sheet的name $objPHPExcel->getActiveSheet()->setTitle('Simple'); 设置单元格的值 $objPHPExcel->getActiveSheet()->setCellValue('A1', 'String'); $objPHPExcel->getActiveSheet()->setCellValue('A2', 12); $objPHPExcel->getActiveSheet()->setCellValue('A3', true); $objPHPExcel->getActiveSheet()->setCellValue('C5', '=SUM(C2:C4)'); $objPHPExcel->getActiveSheet()->setCellValue('B8', '=MIN(B2:C5)'); 合并单元格 $objPHPExcel->getActiveSheet()->mergeCells('A18:E22'); 分离单元格 $objPHPExcel->getActiveSheet()->unmergeCells('A28:B28'); 保护 cell$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); // Needs to be set to true in order to enable any worksheet protection! $objPHPExcel->getActiveSheet()->protectCells('A3:E13', 'PHPExcel'); 设置格式 // Set cell number formatsecho date('H:i:s') . " Set cell number formats\n"; $objPHPExcel->getActiveSheet()->getStyle('E4')->getNumberFormat() ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); $objPHPExcel->getActiveSheet()->duplicateStyle( $objPHPExcel->getActiveSheet()->getStyle('E4'), 'E5:E13' ); 设置宽width// Set column widths$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12); 设置font$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setName('Candara'); $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(20); $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); $objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); $objPHPExcel->getActiveSheet()->getStyle('D13')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('E13')->getFont()->setBold(true); 设置 align$objPHPExcel->getActiveSheet()->getStyle('D11')->getAlignment()-> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); $objPHPExcel->getActiveSheet()->getStyle('D12')->getAlignment()-> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); $objPHPExcel->getActiveSheet()->getStyle('D13')->getAlignment()-> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); $objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()-> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY); //垂直居中 $objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()-> setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); 设置column的border$objPHPExcel->getActiveSheet()->getStyle('A4')->getBorders()->getTop()-> setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);$objPHPExcel->getActiveSheet()->getStyle('B4')-> getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); $objPHPExcel->getActiveSheet()->getStyle('C4')->getBorders()->getTop()-> setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); $objPHPExcel->getActiveSheet()->getStyle('D4')->getBorders()->getTop()-> setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); $objPHPExcel->getActiveSheet()->getStyle('E4')->getBorders()->getTop()-> setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); 设置border的color$objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getLeft()-> getColor()->setARGB('FF993300'); $objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getTop()->getColor()->setARGB('FF993300'); $objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getBottom()->getColor()->setARGB('FF993300'); $objPHPExcel->getActiveSheet()->getStyle('E13')->getBorders()->getTop()->getColor()->setARGB('FF993300'); $objPHPExcel->getActiveSheet()->getStyle('E13')->getBorders()->getBottom()->getColor()->setARGB('FF993300'); $objPHPExcel->getActiveSheet()->getStyle('E13')->getBorders()->getRight()->getColor()->setARGB('FF993300'); 设置填充颜色 $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB('FF808080'); $objPHPExcel->getActiveSheet()->getStyle('B1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $objPHPExcel->getActiveSheet()->getStyle('B1')->getFill()->getStartColor()->setARGB('FF808080'); 加图片$objDrawing = new PHPExcel_Worksheet_Drawing();$objDrawing->setName('Logo'); $objDrawing->setDescription('Logo');$objDrawing->setPath('./images/officelogo.jpg'); $objDrawing->setHeight(36);$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); $objDrawing = new PHPExcel_Worksheet_Drawing();$objDrawing->setName('Paid'); $objDrawing->setDescription('Paid');$objDrawing->setPath('./images/paid.png'); $objDrawing->setCoordinates('B15');$objDrawing->setOffsetX(110); $objDrawing->setRotation(25);$objDrawing->getShadow()->setVisible(true); $objDrawing->getShadow()->setDirection(45);$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); //处理中文输出问题需要将字符串转化为UTF-8编码,才能正常输出,否则中文字符将输出为空白, 如下处理: $str = iconv('gb2312', 'utf-8', $str); 或者你可以写一个函数专门处理中文字符串:function convertUTF8($str) { if(empty($str)) return ''; return iconv('gb2312', 'utf-8', $str); }//从数据库输出数据处理方式从数据库读取数据如: $db = new Mysql($dbconfig); $sql = "SELECT * FROM 表名"; $row = $db->GetAll($sql); // $row 为二维数组 $count = count($row); for ($i = 2; $i <= $count+1; $i++) { $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, convertUTF8($row[$i-2][1])); $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, convertUTF8($row[$i-2][2])); $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, convertUTF8($row[$i-2][3])); $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, convertUTF8($row[$i-2][4])); $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, convertUTF8(date("Y-m-d", $row[$i-2][5]))); $objPHPExcel->getActiveSheet()->setCellValue('F' . $i, convertUTF8($row[$i-2][6])); $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, convertUTF8($row[$i-2][7])); $objPHPExcel->getActiveSheet()->setCellValue('H' . $i, convertUTF8($row[$i-2][8])); } 在默认sheet后,创建一个worksheetecho date('H:i:s') . " Create new Worksheet object\n"; $objPHPExcel->createSheet(); $objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel5'); $objWriter-save('php://output');本文原创发布php中文网 ,转载请注明出处,感谢您的尊重! -
php如何去掉中括号
php去掉中括号的方法:首先创建一个PHP示例文件;然后通过正则表达式“preg_replace('/\[.*?\]/', '', $str);”去除中括号以及中括号里面的内容;最后通过echo输出运行结果即可。程序代码如下:$str = '9sfa[ksl64546+j]s45'; $str = preg_replace('/\[.*?\]/', '', $str); echo $str;exit;本文原创发布php中文网 ,转载请注明出处,感谢您的尊重! -
PHP远程读取excel文件,怎么读取?
先把远程的弄到本地里。
最简单代码是:file_put_contents('abc.xls',file_get_contents('http://www.xx.com/abc.xls')); -
phpspreadsheet 导出导入excel简单封装
1.composer 安装
composer require phpoffice/phpspreadsheet 1.8.2因为要兼容php5.6,所以是用的1.8.2版本
2.在公共函数文件中引入头文件
use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Style\Alignment;
3.定义导出封装函数
if (!function_exists('downLoadExcel')){ /** * 导出excel * @param $name excel名称 * @param $titles 标题 [['name'=>'姓名'],['gender'=>'性别']] * @param array $data * @throws \PhpOffice\PhpSpreadsheet\Exception * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception */ function downLoadExcel($name, $titles, $data=[]) { $count = count($titles); //计算表头数量 $spreadsheet = new Spreadsheet(); $styleArray = [ 'alignment' => [ 'horizontal' => Alignment::HORIZONTAL_CENTER_CONTINUOUS, 'vertical' => Alignment::VERTICAL_CENTER, ], ]; $sheet = $spreadsheet->getActiveSheet(); for ($i = 65; $i < $count + 65; $i++) { //数字转字母从65开始,循环设置表头 $sheet->getStyle(strtoupper(chr($i)))->applyFromArray($styleArray); $sheet->getCell(strtoupper(chr($i)).'1')->getStyle()->getFont()->setBold(true); $index = $i - 65; $sheet->setCellValue(strtoupper(chr($i)) . '1', $titles[$index][key($titles[$index])] ); } /*--------------开始从数据库提取信息插入Excel表中------------------*/ foreach ($data as $key => $item) { //循环设置单元格: //$key+2,因为第一行是表头,所以写到表格时 从第二行开始写 for ($i = 65; $i < $count + 65; $i++) { //数字转字母从65开始: $sheet->setCellValue(strtoupper(chr($i)) . ($key + 2),$item[key($titles[$i - 65])]); $spreadsheet->getActiveSheet()->getColumnDimension(strtoupper(chr($i)))->setAutoSize(true); } } header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . $name . '.xlsx"'); header('Cache-Control: max-age=0'); $writer = IOFactory::createWriter($spreadsheet,'Xlsx'); $writer->save('php://output'); //删除清空 $spreadsheet->disconnectWorksheets(); unset($spreadsheet); exit; } }
4.定义导入封装函数
if (!function_exists('importExcel')){ /** * 导入excel * @param $filePath 文件路径 * @param $cols 要导入的列 从1开始 $cols = [['1' => 'id'],['2' =>'name']]; * @param int $sheetIndex sheet索引,默认从0开始 * @return array * @throws \PhpOffice\PhpSpreadsheet\Exception * @throws \PhpOffice\PhpSpreadsheet\Reader\Exception */ function importExcel($filePath, $cols, $sheetIndex = 0){ $reader = IOFactory::createReader('Xlsx'); $reader->setReadDataOnly(TRUE); $spreadsheet = $reader->load($filePath); //载入excel表格 $sheetCount = $spreadsheet->getSheetCount(); if ($sheetIndex > $sheetCount - 1){ exit('sheet不存在'); } $worksheet = $spreadsheet->getSheet($sheetIndex); $highestRow = $worksheet->getHighestRow(); // 总行数 $lines = $highestRow - 2; if ($lines <= 0) { exit('Excel表格中没有数据'); } $data = []; for ($row = 2; $row <= $highestRow; $row++) { for ($i = 0; $i < count($cols); $i ++){ $index = key($cols[$i]); $key = array_values($cols[$i])[0]; $data[$row][$key] = $worksheet->getCellByColumnAndRow($index, $row)->getValue(); //学号 } } return array_values($data); } }
5.导出测试使用
$titles = [['name'=>'姓名'],['gender'=>'性别']]; $data = [ ['name'=>'小黑','gender'=>'男'] ]; downLoadExcel('测试',$titles,$data);
6.导入测试使用
excel如下
$path = ROOT_PATH.DS.'public'.DS.'excel'.DS.'student.xlsx'; if (is_file($path)){ $cols = [['2' => 'name'],['3' =>'gender'],['4' => 'class']]; $data = importExcel($path,$cols); halt($data); }
col是第几列对应数组的key,这样就只会获取excel的姓名,性别,班级的数据
-
nginx 404 not fund 配置 thinkphp6 伪静态
描述:使用phpstudy 的 apache 切换到nginx 控制器报错 404 not fund配置如下:location / { if (!-e $request_filename){ rewrite ^/index.php(.*)$ /index.php?s=$1 last; rewrite ^(.*)$ /index.php?s=$1 last; break; } }附录:
URL设计
6.0的URL访问受路由影响,如果在没有定义或匹配路由的情况下(并且没有开启强制路由模式的话),则是基于:http://serverName/index.php(或者其它入口文件)/控制器/操作/参数/值…如果使用自动多应用模式的话,URL一般是
http://serverName/index.php/应用/控制器/操作/参数/值...普通模式的URL访问不再支持,但参数可以支持普通方式传值
如果不支持PATHINFO的服务器可以使用兼容模式访问如下:
http://serverName/index.php?s=/控制器/操作/[参数名/参数值...]URL重写
可以通过URL重写隐藏应用的入口文件
index.php(也可以是其它的入口文件,但URL重写通常只能设置一个入口文件),下面是相关服务器的配置参考:[ Apache ]
-
httpd.conf配置文件中加载了mod_rewrite.so模块 -
AllowOverride None将None改为All -
把下面的内容保存为
.htaccess文件放到应用入口文件的同级目录下
<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>[ IIS ]
如果你的服务器环境支持
ISAPI_Rewrite的话,可以配置httpd.ini文件,添加下面的内容:RewriteRule (.*)$ /index\.php\?s=$1 [I]在IIS的高版本下面可以配置
web.Config,在中间添加rewrite节点:<rewrite> <rules> <rule name="OrgPage" stopProcessing="true"> <match url="^(.*)$" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTP_HOST}" pattern="^(.*)$" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php/{R:1}" /> </rule> </rules> </rewrite>[ Nginx ]
在Nginx低版本中,是不支持PATHINFO的,但是可以通过在
Nginx.conf中配置转发规则实现:location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; } }其实内部是转发到了ThinkPHP提供的兼容URL,利用这种方式,可以解决其他不支持PATHINFO的WEB服务器环境。
-
-
php怎么实现图片压缩
php实现图片压缩的方法:首先通过“openImage”方法打开图片;然后使用“thumpImage”操作图片;接着将原图复制到图片载体上,并按照一定比例压缩;最后输出图片即可。PHP实现图片压缩同时保持清晰度
代码如下:/** * 图片压缩类:通过缩放来压缩。 * 如果要保持源图比例,把参数$percent保持为1即可。 * 即使原比例压缩,也可大幅度缩小。数码相机4M图片。也可以缩为700KB左右。如果缩小比例,则体积会更小。 * * 结果:可保存、可直接显示。 */ class imgcompress{ private $src; private $image; private $imageinfo; private $percent = 0.5; /** * 图片压缩 * @param $src 源图 * @param float $percent 压缩比例 */ public function __construct($src, $percent=1) { $this->src = $src; $this->percent = $percent; } /** 高清压缩图片 * @param string $saveName 提供图片名(可不带扩展名,用源图扩展名)用于保存。或不提供文件名直接显示 */ public function compressImg($saveName='') { $this->_openImage(); if(!empty($saveName)) $this->_saveImage($saveName); //保存 else $this->_showImage(); } /** * 内部:打开图片 */ private function _openImage() { list($width, $height, $type, $attr) = getimagesize($this->src); $this->imageinfo = array( 'width'=>$width, 'height'=>$height, 'type'=>image_type_to_extension($type,false), 'attr'=>$attr ); $fun = "imagecreatefrom".$this->imageinfo['type']; $this->image = $fun($this->src); $this->_thumpImage(); } /** * 内部:操作图片 */ private function _thumpImage() { $new_width = $this->imageinfo['width'] * $this->percent; $new_height = $this->imageinfo['height'] * $this->percent; $image_thump = imagecreatetruecolor($new_width,$new_height); //将原图复制带图片载体上面,并且按照一定比例压缩,极大的保持了清晰度 imagecopyresampled($image_thump,$this->image,0,0,0,0,$new_width,$new_height,$this->imageinfo['width'],$this->imageinfo['height']); imagedestroy($this->image); $this->image = $image_thump; } /** * 输出图片:保存图片则用saveImage() */ private function _showImage() { header('Content-Type: image/'.$this->imageinfo['type']); $funcs = "image".$this->imageinfo['type']; $funcs($this->image); } /** * 保存图片到硬盘: * @param string $dstImgName 1、可指定字符串不带后缀的名称,使用源图扩展名 。2、直接指定目标图片名带扩展名。 */ private function _saveImage($dstImgName) { if(empty($dstImgName)) return false; $allowImgs = ['.jpg', '.jpeg', '.png', '.bmp', '.wbmp','.gif']; //如果目标图片名有后缀就用目标图片扩展名 后缀,如果没有,则用源图的扩展名 $dstExt = strrchr($dstImgName ,"."); $sourseExt = strrchr($this->src ,"."); if(!empty($dstExt)) $dstExt =strtolower($dstExt); if(!empty($sourseExt)) $sourseExt =strtolower($sourseExt); //有指定目标名扩展名 if(!empty($dstExt) && in_array($dstExt,$allowImgs)){ $dstName = $dstImgName; }elseif(!empty($sourseExt) && in_array($sourseExt,$allowImgs)){ $dstName = $dstImgName.$sourseExt; }else{ $dstName = $dstImgName.$this->imageinfo['type']; } $funcs = "image".$this->imageinfo['type']; $funcs($this->image,$dstName); } /** * 销毁图片 */ public function __destruct(){ imagedestroy($this->image); } } $source = '123.png';//原图片名称 $dst_img = 'text.png';//压缩后图片的名称 $percent = 1; #原图压缩,不缩放,但体积大大降低 $image = (new imgcompress($source,$percent))->compressImg($dst_img);本文原创发布php中文网 ,转载请注明出处,感谢您的尊重!