php上传图片并压缩-thinkphp如何做图片压缩呢
发布时间:2025-05-20 00:05:26 发布人:远客网络
一、php上传图片并压缩-thinkphp如何做图片压缩呢
php压缩图片
比如(什么?)上面有不同大小的图片--------语文表达缺主语,含糊导致无法理解。
比如(什么?)上面有不同大小的图片--------语文表达缺主语,含糊导致无法理解。
服务器上面?客户机上面?具体什么软件环境上面?
“有不同大小的图片”,已经存在的图片通常已经压缩过的,像JPEG更是有损压缩。再次压缩必定再次会降低画质。PHP可以再次处理图片,但画质和存储大小不能兼得,画质好就存储大,要存储小就画质差,根据自己的画质需求处理。
在上传图片的时候先看看图片有多大,一般来说导航幻灯片的图片单张大小尽量不超100k,产品图不超过20k,这样加载还慢的话就用ajax后加载方法,可以是滚动加载之类,但是对蜘蛛抓取页面并不是很友好。
至于你说的用tp把图片压缩,那只能是将图片的尺寸改成你想要的尺寸,大小的话是web所用格式大小,等页面加载完你又换原图,这样相当于又加载了一遍,还不如做ajax滚动加载。
$sqlconn=new_ysqli($db_host,$db_user,$db_psw,$db_name);
$result=$sqlconn->query($q);
_rintf("Connect_ailed:%s\n",_ysqli_connect_error());
当然使用一些封装的数据库类也是可以的。
$small_img=$uploadfile_resize;
$insert_sql="insert_nto_mg(real_img,small_img)_alues(?,?)";
$result=$sqlconn->_repare($insert_sql);
$result->_ind_param("ss",$real_img,$small_img);
$type=array("jpg","gif","bmp","jpeg","png");
_eturn_ubstr(strrchr($filename,'.'),1);
$chars='ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
_t_srand((double)microtime()*1000000);
_$hash.=$chars[mt_rand(0,$max)];
$a=strtolower(fileext($_FILES['filename']['name']));
if(!in_array(strtolower(fileext($_FILES['filename']['name'])),$type))
$retArray=_rray('ret_code'=>$ret_code,'page_result'=>$page_result);
$retJson=_son_encode($retArray);
$filename=explode(".",$_FILES['filename']['name']);
_$filename[0]=random(10);//设置随机数长度
_$name=implode(".",$filename);
_$uploadfile=$uploaddir.$name;
_hile(file_exists($uploadfile));
_f(move_uploaded_file($_FILES['filename']['tmp_name'],$uploadfile))
_if(is_uploaded_file($_FILES['filename']['tmp_name']))
$retArray=_rray('ret_code'=>$ret_code);
$retJson=_son_encode($retArray);
$uploaddir_resize="upfiles_resize/";
$uploadfile_resize=$uploaddir_resize.$name;
//以上与下面段注释可以联合使用,可以使图片根据计算出来的比例压缩
$file_type=$_FILES["filename"]['type'];
function_esizeImage($uploadfile,$maxwidth,$maxheight,$name)
_f(($width>$maxwidth)_|($height>$maxheight))
_$widthratio=$maxwidth/$width;
_$heightratio=$maxheight/$height;
_if($widthratio<$heightratio)
_if(function_exists("imagecopyresampled"))
_$uploaddir_resize=_magecreatetruecolor($newwidth,$newheight);
__magecopyresampled($uploaddir_resize,$uploadfile,0,0,0,0,$newwidth,$newheight,$width,$height);
_$uploaddir_resize=_magecreate($newwidth,$newheight);
__magecopyresized($uploaddir_resize,$uploadfile,0,0,0,0,$newwidth,$newheight,$width,$height);
_ImageJpeg($uploaddir_resize,$name);
_ImageDestroy($uploaddir_resize);
_ImageJpeg($uploadfile,$name);
if($_FILES["filename"]['size'])
_f($file_type=="image/pjpeg"||$file_type=="image/jpg"|$file_type=="image/jpeg")
_//$im=_magecreatefromjpeg($_FILES[$upload_input_name]['tmp_name']);
_$im=_magecreatefromjpeg($uploadfile);
_lseif($file_type=="image/x-png")
_//$im=_magecreatefrompng($_FILES[$upload_input_name]['tmp_name']);
_$im=_magecreatefromjpeg($uploadfile);
_lseif($file_type=="image/gif")
_//$im=_magecreatefromgif($_FILES[$upload_input_name]['tmp_name']);
_$im=_magecreatefromjpeg($uploadfile);
_$im=_magecreatefromjpeg($uploadfile);
_ResizeImage($im,$pic_width_max,$pic_height_max,$uploadfile_resize);
请按照现实情况更改,test_中对应的信息。
二、thinkphp5 怎么接受zyupload,上传的图片
1、var$allow_types;//允许上传附件类型
2、var$maxsize;//最大允许文件大小,单位为KB
3、var$watermark_file;//水印图片地址
4、var$watermark_trans;//水印透明度
5、//$types:允许上传的文件类型,$maxsize:允许大小,$field:上传控件名称,$time:自定义上传时间
6、functionupload($types='jpg|png',$maxsize=1024,$field='attach',$time=''){
7、$this->allow_types=explode('|',$types);
8、$this->maxsize=$maxsize*1024;
9、$this->time=$time?$time:time();
10、//设置并创建文件具体存放的目录
11、//$basedir:基目录,必须为物理路径
12、//$filedir:自定义子目录,可用参数{y}、{m}、{d}
13、functionset_dir($basedir,$filedir=''){
14、!is_dir($dir)&&@mkdir($dir,0777);
15、$filedir=str_replace(array('{y}','{m}','{d}'),array(date('Y',$this->time),date('m',$this->time),date('d',$this->time)),strtolower($filedir));//用string_replace把{y}{m}{d}几个标签进行替换
16、$dirs=explode('/',$filedir);
17、!empty($d)&&$dir.=$d.'/';
18、!is_dir($dir)&&@mkdir($dir,0777);
19、//图片缩略图设置,如果不生成缩略图则不用设置
20、//$width:缩略图宽度,$height:缩略图高度
21、functionset_thumb($width=0,$height=0){
22、$this->thumb_height=$height;
23、//图片水印设置,如果不生成添加水印则不用设置
24、//$file:水印图片,$pos:水印位置,$trans:水印透明度
25、functionset_watermark($file,$pos=6,$trans=80){
26、$this->watermark_file=$file;
27、$this->watermark_trans=$trans;
28、/*—————————————————————-
29、执行文件上传,处理完返回一个包含上传成功或失败的文件信息数组,
30、其中:name为文件名,上传成功时是上传到服务器上的文件名,上传失败则是本地的文件名
31、dir为服务器上存放该附件的物理路径,上传失败不存在该值
32、size为附件大小,上传失败不存在该值
33、flag为状态标识,1表示成功,-1表示文件类型不允许,-2表示文件大小超出
34、—————————————————————–*/
35、$files=array();//成功上传的文件信息
36、$keys=array_keys($_FILES[$field]['name']);
37、if(!$_FILES[$field]['name'][$key])continue;
38、$fileext=$this->fileext($_FILES[$field]['name'][$key]);//获取文件扩展名
39、$filename=date('Ymdhis',$this->time).mt_rand(10,99).'.'.$fileext;//生成文件名
40、$filedir=$this->dir;//附件实际存放目录
41、$filesize=$_FILES[$field]['size'][$key];//文件大小
42、if(!in_array($fileext,$this->allow_types)){
43、$files[$key]['name']=$_FILES[$field]['name'][$key];
44、$files[$key]['flag']=-1;
45、if($filesize>$this->maxsize){
46、$files[$key]['name']=$_FILES[$field]['name'][$key];
47、$files[$key]['name']=$filesize;
48、$files[$key]['flag']=-2;
49、$files[$key]['name']=$filename;
50、$files[$key]['dir']=$filedir;
51、$files[$key]['size']=$filesize;
52、if(is_uploaded_file($_FILES[$field]['tmp_name'][$key])){
53、move_uploaded_file($_FILES[$field]['tmp_name'][$key],$filedir.$filename);
54、@unlink($_FILES[$field]['tmp_name'][$key]);
55、$files[$key]['flag']=1;
56、//对图片进行加水印和生成缩略图,这里演示只支持jpg和png(gif生成的话会没了帧的)
57、if(in_array($fileext,array('jpg','png'))){
58、if($this->create_thumb($filedir.$filename,$filedir.'thumb_'.$filename)){
59、$files[$key]['thumb']='thumb_'.$filename;//缩略图文件名
60、$this->create_watermark($filedir.$filename);
61、//创建缩略图,以相同的扩展名生成缩略图
62、//$src_file:来源图像路径,$thumb_file:缩略图路径
63、functioncreate_thumb($src_file,$thumb_file){
64、$t_width=$this->thumb_width;
65、$t_height=$this->thumb_height;
66、if(!file_exists($src_file))returnfalse;
67、$src_info=getImageSize($src_file);
68、//如果来源图像小于或等于缩略图则拷贝源图像作为缩略图,免去操作
69、if($src_info[0]<=$t_width&&$src_info[1]<=$t_height){
70、if(!copy($src_file,$thumb_file)){
71、if(($src_info[0]-$t_width)>($src_info[1]-$t_height)){
72、$t_height=($t_width/$src_info[0])*$src_info[1];
73、$t_width=($t_height/$src_info[1])*$src_info[0];
74、$fileext=$this->fileext($src_file);
75、$src_img=ImageCreateFromJPEG($src_file);break;
76、$src_img=ImageCreateFromPNG($src_file);break;
77、$src_img=ImageCreateFromGIF($src_file);break;
78、$thumb_img=@ImageCreateTrueColor($t_width,$t_height);
79、//ImageCopyResampled函数拷贝的图像平滑度较好,优先考虑
80、if(function_exists('imagecopyresampled')){
81、@ImageCopyResampled($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);
82、@ImageCopyResized($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);
83、ImageJPEG($thumb_img,$thumb_file);break;
84、ImageGIF($thumb_img,$thumb_file);break;
85、ImagePNG($thumb_img,$thumb_file);break;
86、functioncreate_watermark($file){
87、if(!file_exists($this->watermark_file)||!file_exists($file))return;
88、if(!function_exists('getImageSize'))return;
89、if(function_exists('ImageCreateFromGIF'))$gd_allow_types['image/gif']='ImageCreateFromGIF';
90、if(function_exists('ImageCreateFromPNG'))$gd_allow_types['image/png']='ImageCreateFromPNG';
91、if(function_exists('ImageCreateFromJPEG'))$gd_allow_types['image/jpeg']='ImageCreateFromJPEG';
92、$fileinfo=getImageSize($file);
93、$wminfo=getImageSize($this->watermark_file);
94、if($fileinfo[0]<$wminfo[0]||$fileinfo[1]<$wminfo[1])return;
95、if(array_key_exists($fileinfo['mime'],$gd_allow_types)){
96、if(array_key_exists($wminfo['mime'],$gd_allow_types)){
97、$temp=$gd_allow_types[$fileinfo['mime']]($file);
98、$temp_wm=$gd_allow_types[$wminfo['mime']]($this->watermark_file);
99、switch($this->watermark_pos){
100、$dst_x=($fileinfo[0]-$wminfo[0])/2;$dst_y=0;break;
101、$dst_x=$fileinfo[0];$dst_y=0;break;
102、$dst_x=0;$dst_y=$fileinfo[1];break;
103、$dst_x=($fileinfo[0]-$wminfo[0])/2;$dst_y=$fileinfo[1];break;
104、$dst_x=$fileinfo[0]-$wminfo[0];$dst_y=$fileinfo[1]-$wminfo[1];break;
105、$dst_x=mt_rand(0,$fileinfo[0]-$wminfo[0]);$dst_y=mt_rand(0,$fileinfo[1]-$wminfo[1]);
106、if(function_exists('ImageAlphaBlending'))ImageAlphaBlending($temp_wm,True);//设定图像的混色模式
107、if(function_exists('ImageSaveAlpha'))ImageSaveAlpha($temp_wm,True);//保存完整的alpha通道信息
108、if(function_exists('imageCopyMerge')){
109、ImageCopyMerge($temp,$temp_wm,$dst_x,$dst_y,0,0,$wminfo[0],$wminfo[1],$this->watermark_trans);
110、ImageCopyMerge($temp,$temp_wm,$dst_x,$dst_y,0,0,$wminfo[0],$wminfo[1]);
111、switch($fileinfo['mime']){
112、returnstrtolower(substr(strrchr($filename,'.'),1,10));