您当前的位置:首页 > 互联网教程

php上传图片并压缩-thinkphp如何做图片压缩呢

发布时间:2025-05-20 00:05:26    发布人:远客网络

php上传图片并压缩-thinkphp如何做图片压缩呢

一、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));