扣丁学堂PHP培训PHP如何进行图像压缩

微米游戏开发团队 2019-03-26

有喜欢PHP开发技术的小伙伴通过扣丁学堂官网咨询扣丁学堂的PHP培训老师关于PHP如何进行图像压缩的问题,现在小编整理出来分享给大家,对PHP如何进行图像压缩有疑问的小伙伴来了解一下吧,希望对小伙伴有所帮助。

扣丁学堂PHP培训PHP如何进行图像压缩

PHP培训

图像压缩:

对图像进行压

缩处理非常简单,因为就一个函数

参数1:目标图像资源(画布)

参数2:等待压缩图像资源

参数3:目标点的x坐标

参数4:目标点的y坐标

参数5:原图的x坐标

参数6:原图的y坐标

参数7:目的地宽度(画布宽)

参数8:目的地高度(画布高)

参数9:原图宽度

参数10:原图高度

imagecopyresampled($1,$2,$3,$4,$5,$6,$7,$8,$9,$10)

封装的图像压缩类

<?php
/*
 * 图像压缩处理类
 */
class Thumb
{
 private $_filename; //等待压缩的图像
 private $_thumb_path = 'thumb/'; //压缩图像的保存目录
 public function __set($p,$v)
 {
 if(property_exists($this,$p)){
 $this -> $p = $v;
 }
 }
 //构造方法初始化需要压缩的图像
 public function __construct($file)
 {
 if(!file_exists($file)){
 echo '文件有误,不能压缩';
 return;
 }
 $this -> _filename = $file;
 }
 //图像压缩处理
 function makeThumb($area_w,$area_h)
 {
 $src_image = imagecreatefrompng($this->_filename);
 $res = getimagesize($this->_filename);
 echo '<pre>';
 var_dump($res);
 die;
 $dst_x = 0;
 $dst_y = 0;
 $src_x = 0;
 $src_y = 0;
 //原图的宽度、高度
 $src_w = imagesx($src_image); //获得图像资源的宽度
 $src_h = imagesy($src_image); //获得图像资源的高度
 if($src_w / $area_w < $src_h/$area_h){
 $scale = $src_h/$area_h;
 }
 if($src_w / $area_w >= $src_h/$area_h){
 $scale = $src_w / $area_w;
 }
 $dst_w = (int)($src_w / $scale);
 $dst_h = (int)($src_h / $scale);
 $dst_image = imagecreatetruecolor($dst_w,$dst_h);
 $color = imagecolorallocate($dst_image,255,255,255);
 //将白色设置为透明色
 imagecolortransparent($dst_image,$color);
 imagefill($dst_image,0,0,$color);
 imagecopyresampled($dst_image,$src_image,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h);
 //可以在浏览器直接显示
 //header("Content-Type:image/png");
 //imagepng($dst_image);
 //分目录保存压缩的图像
 $sub_path = date('Ymd').'/';
 //规范:上传的图像保存到upload目录,压缩的图像保存到thumb目录
 if(!is_dir($this -> _thumb_path . $sub_path)){
 mkdir($this -> _thumb_path . $sub_path,0777,true);
 }
 $filename = $this -> _thumb_path . $sub_path.'thumb_'.$this->_filename;
 //也可以另存为一个新的图像
 imagepng($dst_image,$filename);
 return $filename;
 }
}
$thumb = new Thumb('upload.jpg');
$thumb -> _thumb_path = 'static/thumb/';
$file = $thumb -> makeThumb(100,50);
// var_dump($file);

最后想要了解更多关于PHP开发方面内容的小伙伴,请关注扣丁学堂PHP培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的PHP开发视频,PHP培训后的前景无限,行业薪资和未来的发展会越来越好的,扣丁学堂老师精心推出的PHP视频教程定能让你快速掌握PHP从入门到精通开发实战技能。扣丁学堂PHP技术交流群:374332265。

Pyhon基础课程:https://ke.qq.com/course/327534?flowToken=1008607 【扫码进入Python全栈开发免费公开课】

H5进阶课程:https://ke.qq.com/course/387348?flowToken=1008605【扫码进入前端H5架构师进阶VIP体验课】

注:点击(了解更多)进入课程直播间