用PHP怎样写上传图片并且压缩的功能
Admin 2022-09-20 群英技术资讯 633 次浏览
使用到三个文件
三个文件代码如下:
connect.php
<?php $db_host = ''; $db_user = ''; $db_psw = ''; $db_name = ''; $db_port = ''; $sqlconn=new mysqli($db_host,$db_user,$db_psw,$db_name); $q="set names utf8;"; $result=$sqlconn->query($q); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } ?>
<p><b>test_upload.php</b></p> <?php require ("connect.php"); require ("upload_img.php"); $real_img=$uploadfile; $small_img=$uploadfile_resize; $insert_sql = "insert into img (real_img,small_img) values (?,?)"; $result = $sqlconn -> prepare($insert_sql); $result -> bind_param("ss", $real_img,$small_img); $result -> execute(); ?>
upload_img.php
<?php //设置文件保存目录 $uploaddir = "upfiles/"; //设置允许上传文件的类型 $type=array("jpg","gif","bmp","jpeg","png"); //获取文件后缀名函数 function fileext($filename) { return substr(strrchr($filename, '.'), 1); } //生成随机文件名函数 function random($length) { $hash = 'CR-'; $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz'; $max = strlen($chars) - 1; mt_srand((double)microtime() * 1000000); for($i = 0; $i < $length; $i++) { $hash .= $chars[mt_rand(0, $max)]; } return $hash; } $a=strtolower(fileext($_FILES['filename']['name'])); //判断文件类型 if(!in_array(strtolower(fileext($_FILES['filename']['name'])),$type)) { $text=implode(",",$type); $ret_code=3;//文件类型错误 $page_result=$text; $retArray = array('ret_code' => $ret_code,'page_result'=>$page_result); $retJson = json_encode($retArray); echo $retJson; return; } //生成目标文件的文件名 else { $filename=explode(".",$_FILES['filename']['name']); do { $filename[0]=random(10); //设置随机数长度 $name=implode(".",$filename); //$name1=$name.".Mcncc"; $uploadfile=$uploaddir.$name; } while(file_exists($uploadfile)); if (move_uploaded_file($_FILES['filename']['tmp_name'],$uploadfile)) { if(is_uploaded_file($_FILES['filename']['tmp_name'])) { $ret_code=1;//上传失败 } else {//上传成功 $ret_code=0; } } $retArray = array('ret_code' => $ret_code); $retJson = json_encode($retArray); echo $retJson; } //压缩图片 $uploaddir_resize="upfiles_resize/"; $uploadfile_resize=$uploaddir_resize.$name; //$pic_width_max=120; //$pic_height_max=90; //以上与下面段注释可以联合使用,可以使图片根据计算出来的比例压缩 $file_type=$_FILES["filename"]['type']; function ResizeImage($uploadfile,$maxwidth,$maxheight,$name) { //取得当前图片大小 $width = imagesx($uploadfile); $height = imagesy($uploadfile); $i=0.5; //生成缩略图的大小 if(($width > $maxwidth) || ($height > $maxheight)) { /* $widthratio = $maxwidth/$width; $heightratio = $maxheight/$height; if($widthratio < $heightratio) { $ratio = $widthratio; } else { $ratio = $heightratio; } $newwidth = $width * $ratio; $newheight = $height * $ratio; */ $newwidth = $width * $i; $newheight = $height * $i; if(function_exists("imagecopyresampled")) { $uploaddir_resize = imagecreatetruecolor($newwidth, $newheight); imagecopyresampled($uploaddir_resize, $uploadfile, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); } else { $uploaddir_resize = imagecreate($newwidth, $newheight); imagecopyresized($uploaddir_resize, $uploadfile, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); } ImageJpeg ($uploaddir_resize,$name); ImageDestroy ($uploaddir_resize); } else { ImageJpeg ($uploadfile,$name); } } if($_FILES["filename"]['size']) { if($file_type == "image/pjpeg"||$file_type == "image/jpg"|$file_type == "image/jpeg") { //$im = imagecreatefromjpeg($_FILES[$upload_input_name]['tmp_name']); $im = imagecreatefromjpeg($uploadfile); } elseif($file_type == "image/x-png") { //$im = imagecreatefrompng($_FILES[$upload_input_name]['tmp_name']); $im = imagecreatefromjpeg($uploadfile); } elseif($file_type == "image/gif") { //$im = imagecreatefromgif($_FILES[$upload_input_name]['tmp_name']); $im = imagecreatefromjpeg($uploadfile); } else//默认jpg { $im = imagecreatefromjpeg($uploadfile); } if($im) { ResizeImage($im,$pic_width_max,$pic_height_max,$uploadfile_resize); ImageDestroy ($im); } } ?>
请按照现实情况更改connect.php,test_upload.php中对应的信息。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
今天小编就为大家分享一篇laravel 使用事件系统统计浏览量的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
这篇文章主要为大家介绍了PCRE回溯次数绕过安全限制的正则解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
PHP MySQL分表思路,一张一亿的订单表,可以分成五张表,这样每张表就只有两千万数据,分担了原来一张表的压力,分表需要根据某个条件进行分,这里可以根据地区来分表,需要一个中间件来控制到底是去哪张表去找到自...
这篇文章主要介绍了Laravel框架实现的批量删除功能,结合实例形式分析了Laravel框架批量删除功能相关的前端界面布局及后台控制器实现技巧,需要的朋友可以参考下
workerman端口不通的解决办法:首先关闭防火墙;然后直接在服务端中设置成“0.0.0.0:端口”;接着在出站规则与入站规则中设置端口;最后卸载相关拦截软件即可。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008