PHP 图片上传 图片压缩
直接使用方法的 Upload($uploadimgfile)
就可以实现上传和压缩操作。
<?php
namespace Home\Controller;
final class Upload
{
//设置文件保存目录
public $uploaddir = "Public/uploadimg/";
//设置允许上传文件的类型
public $type=array("jpg","gif","bmp","jpeg","png");
//获取文件后缀名函数
public function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}
//生成随机文件名函数
public function random($length)
{
$hash = 'CRP-'.date("mis");
$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;
}
public function Upload($uploadimgfile){
//判断文件类型
if(!in_array(strtolower($this->fileext($uploadimgfile['file']['name'])),$this->type))
{
$text=implode(",",$this->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['file']['name']);
do
{
$filename[0]=$this->random(8); //设置随机数长度
$name=implode(".",$filename);
$uploadfile=$this->uploaddir.$name;
}while(file_exists($uploadfile));
if(move_uploaded_file($uploadimgfile['file']['tmp_name'],$uploadfile)){
if(is_uploaded_file($uploadimgfile['file']['tmp_name'])){
$ret_code=1;//上传失败
}else {
//上传成功 处理图片大小 如果大于1M 就将图片进行压缩0.5
if($uploadimgfile["file"]['size'] > 1024 * 1024){
list($width,$height,$type)=getimagesize($uploadfile);
$i= 800 / $width;
$new_width = $width*$i;
$new_height =$height*$i;
if($uploadimgfile['file']['type'] == "image/pjpeg" || $uploadimgfile['file']['type'] == "image/jpg" || $uploadimgfile['file']['type'] == "image/jpeg"){
$im = imagecreatefromjpeg($uploadfile);
}elseif($uploadimgfile['file']['type'] == "image/png"){
$im = imagecreatefrompng($uploadfile);
}elseif($uploadimgfile['file']['type'] == "image/gif"){
$im = imagecreatefromgif($uploadfile);
}else{//默认jpg
$im = imagecreatefromjpeg($uploadfile);
}
if($im){
//开始压缩
$image_wp=imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($image_wp, $im, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_wp, $this->uploaddir.'S_'.$name,75);
imagedestroy($image_wp);
}
}
$ret_code=0;
}
}
$retArray = array('ret_code' => $ret_code);
$retJson = json_encode($retArray);
echo $retJson;
}
}
}
?>
PHP 图片上传 图片压缩相关推荐
- php 实现图片上传并压缩功能
前段时间由于项目需要,要实现图片上传并且压缩生成缩略图的功能. 接口代码如下: $allowext = array ( 'png', 'jpg', 'jpeg', 'gif','mp4','doc') ...
- vue图片上传及压缩组件的封装
vue图片上传及压缩组件的封装 源码地址 使用方法: 先去上面的链接把组件,复制到自己的components文件夹内 1.先下载 cnpm install compressorjs --save-de ...
- 移动端图片上传并生成图片(图片上传/图片压缩/图片绘制/Vue纯前端)
如今用户上传图片,生成图保存分享这些都是h5页面的基操了吧,十分常见,实际操作起来也是满满的技能点,其实也有很多兼容问题的坑. 下面是以vue+elementUI做的一套,有需要的直接拿去- 如果有对 ...
- uniapp图片上传与压缩,兼容小程序与H5
图片上传借助了Uview2.0的组件 <u-upload :fileList="imgs" :name="" @afterRead="after ...
- 淘淘商城第三天—完成商品添加功能 商品类目选择 图片上传 图片服务器搭建 kindEditor富文本编辑器的使用 商品添加功能
1.实现商品类目选择功能 1.1需求 在商品添加页面,点击"选择类目"显示商品类目列表: 请求初始化树形控件的url:/item/cat/list 1.2 EasyUI tree数 ...
- form 表单 + HTML5(FileReader) +iframe 实现无刷新图片上传+图片预览效果
作为一个初入前端的菜鸟,最近因为一个无刷新上传图片问题走了很多弯路,所以在这里给大家分享一下,不足之处希望谅解.无刷新上传图片一般有两种方式,一种是 form 表单+iframe ,还有一种是 aja ...
- html input type=file 文件上传; 图片上传; 图片闪烁
(1)input file 对话框和 获取选中文件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- h5 ajax php 图片上传,图片上传生成海报H5技术详解
我想很多经常做H5同学都会遇到过让用户上传照片的这种需求,那我这里给大家分享一些我常用的一些方法~废话不多时候,下面可以写一些干货,如果有更好的方法欢迎留言讨论! 首先,需要准备一些需要用到的东西. ...
- ecstore 图片上传 图片id写入数据库
所有的图片信息,都存储在sdb_image_image表中.我们也可以将上传后的图片id写入到自己定义的表中. 主要的几个步骤: 1.加载的页面中写入图片上传的组件: <{toinput fro ...
- mui ajax 文件上传,MUI的图片上传和压缩
MUI的上传图片目前知道有两种方式,一种见前面文章中关于图片裁切时使用的base64作为字符串上传,另外一种则是本篇章中所使用的plus.uploader方式,它是一种真正意义上的文件上传,我们可以使 ...
最新文章
- EXPDP 时ORA-27054 问题处置
- 网络数据被截取,该如何维权?
- 【CentOS】安装lnmp环境
- mnn c++ windows 调用实例
- redhat6.5 配置使用centos的yum源
- 批处理脚本, 读取文件并字符串替换
- Oracle 空间查询, 数据类型为 sdo_geometry
- python实现编辑距离,最长公共子序列,最长公共子串
- Linux系统中,各种小动物
- Atitit.异步编程技术原理与实践attilax总结
- c语言使用的编程环境是,啊哈C语言编程-第3课-C语言编程环境
- windows 控制台cmd乱码的解决办法
- 反编译之脱去乐固加固的壳
- 电路抗干扰设计——非常详细
- 【AI简报20210604期】意法半导体收购Cartesiam、10个顶级开源AI项目分享
- C语言中的void和void指针-void*
- Vue实现吸顶的效果
- 论接口自动化测试方法
- 知识产权审理庭解决方案
- 打印机上显示无法连接到服务器,服务器连接打印机无法连接到服务器
热门文章
- 外贸找客户软件:Email Extractor v7.2
- ieda永久破解!!!
- 经济筑底要看房市“脸色”
- db2 v9权威指南_花颜男妃(生子)
- SAP中ABAP的生产订单调用BAPI进行投料BAPI_GOODSMVT_CREATE(根据生产订单号进行投料,可以修改物料数量)
- 《百面机器学习》学习笔试之模型评估(第2章)
- trove mysql 镜像_openstack trove 数据库镜像构建列表
- HTML+css+js实现网页时钟、全网做得最好的时钟!
- 【密码学】HMAC与HS256算法
- java吸血鬼数字_吸血鬼数字的简单实现