php上传图片生成缩略图(GD库)


Posted in PHP onJanuary 06, 2016

首先来一段简单的php上传图片生成缩略图的详细代码,分享给大家供大家参考,具体内容如下

<?php
function createThumbnail($imageDirectory, $imageName, $thumbDirectory, $thumbWidth, $quality){
$details = getimagesize("$imageDirectory/$imageName") or die('Please only upload images.');
$type = preg_replace('@^.+(?<=/)(.+)$@', '$1', $details['mime']);
eval('$srcImg = imagecreatefrom'.$type.'("$imageDirectory/$imageName");');
$thumbHeight = $details[1] * ($thumbWidth / $details[0]);
$thumbImg = imagecreatetruecolor($thumbWidth, $thumbHeight);
imagecopyresampled($thumbImg, $srcImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight,
$details[0], $details[1]);
eval('image'.$type.'($thumbImg, "$thumbDirectory/$imageName"'.
(($type=='jpeg')?', $quality':'').');');
imagedestroy($srcImg);
imagedestroy($thumbImg);
}
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];
move_uploaded_file($tmp_name, "data/$name");
createThumbnail("/location/of/main/image", $name, "/location/to/store/thumb", 120, 80);
//120 = thumb width :: 80 = thumb quality (1-100)
}
}
?>

接下来再为大家推荐一个实例php使用GD库上传图片以及创建缩略图,直接看代码:

GD库是PHP进行图象操作一个很强大的库。

先在php.ini里增加一行引用:extension=php_gd2.dll

重启apache,做一个测试页var_dump(gd_info());输出数据表明GD库引用成功。

图片上传页面 upload.html

<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<title>图片上传</title>
</head>
<body>
<h1>文件上传(只允许上传jpg类型图片)</h1>
<form enctype="multipart/form-data" action="upload_img.php" method="post">
 <input name="upfile" type="file"><br><br>
 <input type="submit" value="提交">
</form>
</body>
</html>

处理页面upload_img.php

<?php
 //上传图片保存地址
 $uploadfile = "upfiles/".$_FILES['upfile']['name'];
 //缩略图保存地址
 $smallfile = "upfiles/small_".$_FILES['upfile']['name'];


 if($_FILES['upfile']['type'] != "image/jpeg")
 {
  echo '文件类型错误';
 }
 else
 {
  move_uploaded_file($_FILES['upfile']['tmp_name'],$uploadfile); //上传文件

  $dstW=200;//缩略图宽
  $dstH=200;//缩略图高

  $src_image=ImageCreateFromJPEG($uploadfile);
  $srcW=ImageSX($src_image); //获得图片宽
  $srcH=ImageSY($src_image); //获得图片高

  $dst_image=ImageCreateTrueColor($dstW,$dstH);
  ImageCopyResized($dst_image,$src_image,0,0,0,0,$dstW,$dstH,$srcW,$srcH);
  ImageJpeg($dst_image,$smallfile);

  echo '文件上传成功<br>';
  echo "<img src='$smallfile' />";
 }
?>

希望对大家学习php程序设计有所帮助,谢谢大家的支持。

PHP 相关文章推荐
PHP教程之PHP中shell脚本的使用方法分享
Feb 23 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
Apr 09 PHP
ThinkPHP中U方法的使用浅析
Jun 13 PHP
thinkphp在模型中自动完成session赋值示例代码
Sep 09 PHP
php+jQuery递归调用POST循环请求示例
Oct 14 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 PHP
Yii2下点击验证码的切换实例代码
Mar 14 PHP
浅析PHP数据导出知识点
Feb 17 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
Oct 21 PHP
joomla数据库操作示例代码
Jan 06 #PHP
Yii清理缓存的方法
Jan 06 #PHP
yii实现model添加默认值的方法(2种方法)
Jan 06 #PHP
如何使用微信公众平台开发模式实现多客服
Jan 06 #PHP
基于PHP技术开发客服工单系统
Jan 06 #PHP
分享php邮件管理器源码
Jan 06 #PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 #PHP
You might like
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
npm 语义版本控制详解
2019/09/10 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
python正则表达式实例代码
2020/03/03 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
String这个类型的class为何定义成final?
2012/11/13 面试题
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
教师的实习鉴定
2013/12/15 职场文书
社会学专业求职信
2014/07/17 职场文书
励志演讲稿200字
2014/08/21 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
大一新生检讨书
2014/10/29 职场文书
2014年党小组工作总结
2014/12/20 职场文书
2019年中,最受大众欢迎的6本新书
2019/08/07 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript
这样写python注释让代码更加的优雅
2021/06/02 Python