if ($_FILES[‘file‘][‘error‘] == 0) {$MAX_FILE_SIZE = 300000;if ($_FILES[‘file‘][‘size‘] > $MAX_FILE_SIZE) {exit(‘文件超出指定大小‘);

}$allowSuffix = [‘jpg‘, ‘png‘, ‘jpeg‘];$myImg = explode(‘.‘, $_FILES[‘file‘][‘name‘]);$mySuffix = array_pop($myImg);if (!in_array($mySuffix, $allowSuffix)) {exit(‘文件类型不对‘);

}$allowMine =[‘image/jpg‘,

‘image/jpeg‘,

‘image/pjpeg‘,

‘image/gif‘];if (!in_array($_FILES[‘file‘][‘type‘], $allowMine)) {exit(‘文件mime类型不对‘);

}$path = "upload/images/";$name = date(‘Ymdhis‘).mt_rand(0, 9). ‘.‘ .$mySuffix;if(is_uploaded_file($_FILES[‘file‘][‘tmp_name‘])) {if (move_uploaded_file($_FILES[‘file‘][‘tmp_name‘], $path.$name)) {$thumb_url = create_thumb($path.$name);$thumb_url2 = create_thumb($path.$name, 200, true);echo ‘上传成功, 缩略图路径为: ‘.$thumb_url;echo ‘方缩略图路径为: ‘.$thumb_url2;

}else{echo ‘上传失败‘;

}

}else{exit(‘不是上传文件‘);

}

}else{exit(‘上传失败‘);

}/**

* 给图片生成缩略图*/

function create_thumb($url, $max_width = 200, $is_square = false) {$image = imagecreatefromjpeg($url);list($ow, $oh) = getimagesize($url);$path_arr = explode(‘.‘, $url);//如果要求生成正方形的缩略图

if ($is_square) {if ($ow > $max_width) {$nw = $max_width;$new_image = imagecreatetruecolor($nw, $nw);$white = imagecolorallocate($new_image, 255, 255, 255);

imagefilledrectangle($new_image, 0, 0, $nw, $nw, $white);$o_wh = $ow > $oh ? $oh : $ow;

imagecopyresampled($new_image, $image, 0, 0, 0, 0, $nw, $nw, $o_wh, $o_wh);

imagejpeg($new_image, $path_arr[0].‘_thumbf.jpg‘);$result = $path_arr[0].‘_thumbf.jpg‘;

}else{$new_image = imagecreatetruecolor($ow, $ow);$white = imagecolorallocate($new_image, 255, 255, 255);

imagefilledrectangle($new_image, 0, 0, $ow, $ow, $white);if ($ow > $oh) {

imagecopyresampled($new_image, $image, 0, ($ow - $oh)/ 2, 0, 0, $ow, $oh, $ow, $oh);

}else{

imagecopyresampled($new_image, $image, 0, 0, 0, 0, $ow, $ow, $ow, $ow);

}

imagejpeg($new_image, $path_arr[0].‘_thumbf.jpg‘);$result = $path_arr[0].‘_thumbf.jpg‘;

}

}else{if ($ow > $max_width) {$percent = $max_width / $ow;$nw = $max_width;$nh = $oh * $percent;$new_image = imagecreatetruecolor($nw, $nh);

imagecopyresampled($new_image, $image, 0, 0, 0, 0, $nw, $nh, $ow, $oh);

imagejpeg($new_image, $path_arr[0].‘_thumb.jpg‘);$result = $path_arr[0].‘_thumb.jpg‘;

}else{$new_image = imagecreatetruecolor($ow, $oh);$white = imagecolorallocate($new_image, 255, 255, 255);

imagefilledrectangle($new_image, 0, 0, $ow, $oh, $white);

imagecopyresampled($new_image, $image, 0, 0, 0, 0, $ow, $oh, $ow, $oh);

imagejpeg($new_image, $path_arr[0].‘_thumb.jpg‘);$result = $path_arr[0].‘_thumb.jpg‘;

}

}

imagedestroy($image);return $result;

}//清空文件夹

function clearDir($dir) {if (is_dir($dir)) {if ($dh = opendir($dir)) {while ($file=readdir($dh)) {if (is_file($dir.$file)) {unlink($dir.$file);

}

}closedir($dh);

}

}

}?>

php 上传图片并生成缩略图,php 上传图片并生成缩略图相关推荐

  1. java 上传图片 生成缩略图_将图片生成缩略图Java代码实现

    在工作中经常会遇到图片处理相关的需求,比如说一些图片网站只展示相关的缩略图,而真实的图片可能很大而不是直接展示.所以就需要在上传相关的图片后直接对图片进行处理生成相关的缩略图.实现代码如下: impo ...

  2. 超详细---使用QRCode生成二维码并生成到PDF上

    突发奇想想生成一个这样的一个带二维码的pdf: 然后就开始做了 废话不多说了直接上代码: POM.XML(所需要的jar) 里面的jar可能不全,根据错误提示需要自己再去引入jar <!-- P ...

  3. 对抗生成网络_深度卷积生成对抗网络

    本教程演示了如何使用深度卷积生成对抗网络(DCGAN)生成手写数字图片.该代码是使用 Keras Sequential API 与 tf.GradientTape 训练循环编写的. 什么是生成对抗网络 ...

  4. 【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )

    文章目录 I . 视图绑定组件简介 II . 视图绑定 ViewBinding 使用前提 ( Android Studio 3.6 ) III . 视图绑定组件启用 IV . 定制视图绑定 ( 启用视 ...

  5. Dataset:数据生成之利用pandas自定义生成随机各自类型(离散型和连续型)的dataframe数据

    Dataset:数据生成之利用pandas自定义生成随机各自类型(离散型和连续型)的dataframe数据 目录 数据生成之利用pandas自定义生成随机数据 输出结果 实现代码 数据生成之利用pan ...

  6. Python语言学习:Python随机生成那些事之随机生成使用方法、案例应用之详细攻略

    Python语言学习:利用Python随机生成那些事之随机生成使用方法.案例应用之详细攻略 目录 案例应用 1.随机生成指定区间内的某一值 案例应用 1.随机生成指定区间内的某一值 使用说明:给定区域 ...

  7. latex自动生成中文目录_自动生成工作表目录三种方法,看哪种适合你?

    如果在一个工作簿内有很多工作表需要去维护管理,一个个的查找显然是很麻烦的,建立一个工作表的导航目录无疑是最便捷的方法. 下面介绍三种生成工作表目录的方法: 一.利用宏表函数生成可导航目录 第1步:定义 ...

  8. java excel转word表格_java利用poi生成/读取excel表格、生成word

    1.引入jar包依赖 org.apache.poi poi 3.9 org.apache.poi poi-ooxml 3.8 View Code 2.编写代码测试 1 packagetestweb;2 ...

  9. Shell编程 ——for循环、if语句、sleep睡眠。——每秒钟生成一个文件,一共生成60个文件

    实践: 每秒钟生成一个文件,一共生成60个文件,文件名格式是"20190101_101010.txt".但是,第10.20秒,不生成文件. #!/bin/sh for((i=0;i ...

  10. 用java写ods系统_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo是基于数据库的代码自动生成工具,低代码编程技术的实现,可以零代码自动生成SpringBoot项目工程.生成JavaBean.生成前后端分离的CRUD代码.生成MyBaits的Mapper ...

最新文章

  1. 计算机界最大“追书坑”,82岁大神高德纳仍在写《计算机程序设计艺术》4B卷...
  2. 远程线程注入引出的问题
  3. c++11 移动语义move semantics
  4. 计算机系统操作工培训视频,计算机系统操作工培训第三篇.ppt
  5. 面试常考题:不调用库函数,怎样实现字符串操作函数?
  6. mysql elt interval_mysql 区间分组 interval,elt 的运用
  7. iPad Air PSD设计模板
  8. git提交及打标签(tag)流程
  9. 【汇编】intel core cpu中常用的寄存器
  10. matlab凑数求和,凑数求和算法 C语言问题 C语言求和算法
  11. 15. Bypass 360主机卫士SQL注入防御(多姿势)
  12. Mac将应用程序及其数据移到外接硬盘的步骤 #替身 #软链接
  13. 首批接入司法数据的网贷平台已拒贷3万余失信被执行人
  14. 2021-12-23 网工基础(十四) 链路聚合的两种模式、堆叠、集群、IP路由基础
  15. 201612-3-炉石传说
  16. spring+mybatis 一个事务中两次查询结果不一样的问题
  17. office回退版本,从2021到2019
  18. SpringBoot---MongoDB的简单使用
  19. kiwi syslog安装部署中的问题
  20. tesseract-ocr+java实现图片文字识别

热门文章

  1. PyTorch学习笔记(五):模型定义、修改、保存
  2. 大数据如何助力农业发展
  3. Tensorflow2.0入门教程(一)
  4. html5 Canvas 绘制基本图形 从直线图形到使用路径 - 直线、矩形、路径、多边形、复杂组合图形
  5. java 53个关键字_java的保留(53个)关键字v11.docx
  6. php实现弱类型,PHP内核探索:弱类型变量的实现
  7. Hadoop架构中各个集群在开发中的作用
  8. java 开发环境 列表_Java 开发环境配置
  9. R+工业级GBDT︱微软开源 的LightGBM(R包已经开放)
  10. 关于hankcs库的自然语言处理