/**

*

* @author zhao jinhan

* @date 2014年1月13日11:54:30

* @email [email protected]

*

*/

header(‘Content-type:text/html; charset=utf-8‘);

//定义缩略图的宽高

define(‘THUMB_WIDTH‘,300);

define(‘THUMB_HEIGHT‘,300);

/**

* 重新生成上传的文件名

* @return string

* @author zhao jinhan

*

*/

function _file_type($filetype = null){

switch($filetype)

{

case "image/jpeg":

$fileextname = "jpg";

break;

case "image/gif":

$fileextname = "gif";

break;

case "image/png":

$fileextname = "png";

break;

default:

$fileextname = false;

break;

}

return $fileextname?date(‘YmdHis‘,time()).‘.‘.$fileextname:false;

}

/**

*

* @param string $filename

* @param string $width

* @param string $height

* @param string $quality

* @param string $savepath

* @return boolean

*/

function _make_thumb($filename=‘‘, $width=THUMB_WIDTH, $height=THUMB_HEIGHT, $savepath=‘./upload‘){

if(file_exists($filename)){

//上传图片的尺寸

$imagesize=getimagesize($filename);

$imagewidth=$imagesize[0];

$imageheight=$imagesize[1];

$mime = $imagesize[‘mime‘];

//宽高比例

$ratio = $imagewidth/$imageheight;

//新建一个背景图片

$bgimg = imagecreatetruecolor($width, $height);

$white = imagecolorallocate($bgimg, 255, 255, 255);

//填充背景色为白色

imagefill($bgimg,0,0,$white);

if($mime == ‘image/gif‘){

$im = @imagecreatefromgif($filename); /* Attempt to open */

$outfun = ‘imagegif‘;

}elseif($mime == ‘image/png‘){

$im = @imagecreatefrompng($filename); /* Attempt to open */

$outfun = ‘imagepng‘;

}else{

$im = @imagecreatefromjpeg($filename); /* Attempt to open */

$outfun = ‘imagejpeg‘;

}

if($ratio > 1){

//宽度较大

if($imagewidth > $width){

//缩放图片到背景图片上

$new_width = $width;

$new_height = ($width*$imageheight)/$imagewidth;

$bg_y = ceil(abs(($height-$new_height)/2));

imagecopyresampled($bgimg, $im, 0, $bg_y, 0, 0, $new_width, $new_height, $imagewidth, $imageheight);

}else{

//复制图片到背景图片上

$copy = true;

}

}else{

//高度较大

if($imageheight > $height){

//缩放图片

$new_height = $height;

$new_width = ($height*$imagewidth)/$imageheight;

$bg_x = ceil(($width-$new_width)/2);

imagecopyresampled($bgimg, $im, $bg_x, 0, 0, 0, $new_width, $new_height, $imagewidth, $imageheight);

}else{

//复制图片到背景图片上

$copy = true;

}

}

if($copy){

//复制图片到背景图片上

$bg_x = ceil(($width-$imagewidth)/2);

$bg_y = ceil(($height-$imageheight)/2);

imagecopy($bgimg, $im, $bg_x, $bg_y, 0, 0, $imagewidth, $imageheight);

}

$ext = _file_type($mime);

$outfun($bgimg, $savepath.‘/‘.$ext);

imagedestroy($bgimg);

return $savepath.‘/‘.$ext;

}else{

return false;

}

}

if($_POST){

$size = $_POST[‘size‘]?strtoupper(trim($_POST[‘size‘])):‘2M‘;

$imgsize = $_FILES[‘img‘][‘size‘]?$_FILES[‘img‘][‘size‘]/(1024*1024):0;

$imgwidth = $imgheight = $_POST[‘width-height‘]?intval($_POST[‘width-height‘]):300;

//自定定义文件上传大小

ini_set(‘upload_max_filesize‘,$size);

$mathsize = str_replace(‘M‘,‘‘,$size);

if($imgsize>$mathsize){

echo "图片大小不得超过{$size}!";

return;

}

if($file_name = _file_type($_FILES[‘img‘][‘type‘])){

if($_FILES[‘img‘][‘error‘] == UPLOAD_ERR_OK){

$savepath = ‘upload/‘;

if(!is_dir($savepath)){

mkdir($savepath,0644);

}

//生成缩略图

$thumb_file = _make_thumb($_FILES[‘img‘][‘tmp_name‘], $imgwidth, $imgheight, $savepath);

//move_uploaded_file($_FILES[‘img‘][‘tmp_name‘],$savepath.$file_name);

echo "生成后的图片为:";

}else{

echo $_FILES[‘img‘][‘error‘];

return;

}

}else{

echo "图片格式不正确,请上传jpg,gif,png的格式!";

return;

}

}else{

echo <<

缩放图片保存成正方形

上传一张图片:

生成缩略图的宽高(单位px):

文件大小上限:

EOT;

}

原文:http://www.jb51.net/article/45608.htm

php 上传图片等比缩小,PHP上传图片进行等比缩放可增加水印功能相关推荐

  1. kindeditor上传图片php,Kindeditor编辑器添加图片上传水印功能(php代码)

    KindEditor 是一套开源的在线HTML编辑器,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本输入框.可以无缝地与 Java..NET.PH ...

  2. php服务器无法上传图片,IIS+php服务器无法上传图片解决办法_PHP教程

    主要目的就是测试我的php.ini没有设置upload_dir_tmp的值的时候,上传的文件临时保存在哪里的,经过这个测试发现原来在不配置php.ini的upload_dir_tmp的值的时候,默认的 ...

  3. php上传图片完成后的截图,php实现粘贴截图并完成上传功能

    今天发现segmentfault的评论留言里面可以粘贴上传图片,于是研究了下怎么实现的! 原理很简单其实就是监控粘贴事件,然后检测是否粘贴的东西里面有图片,有的话直接触发ajax上传 代码可以直接运行 ...

  4. ios 上传图片失败 小程序_iOS上传图片,就是有这种不一样的操作!

    很久没发文了,最近这段时间在看前端的东西,在忙微商城webapp的事,用的vue2.0开发,打算过段时间记录总结那方面的一些知识点和坑.下面进入今天的主题. 说到iOS上传图片,网上的资料满满皆是,分 ...

  5. php上传图片显示在当前页,PHP上传图片到数据库并显示

    PHP上传图片到数据库并显示 1.创建数据表CREATE TABLE ccs_image ( id int(4) unsigned NOT NULL auto_increment, descripti ...

  6. 七牛上传图片html,MWEB+七牛 上传图片

    MWEB+七牛 上传图片 博客之前的图片也都用的七牛,但编辑和上传分离还是很麻烦,所以一直很心水meb, 上周mweb降到50¥,感觉短期内应该不会再降了,于是果断入手,今天在和使用图床功能遇到了一些 ...

  7. anguarjs 上传图片预览_JS控制上传图片个数,预览上传图片

    一共是2个函数 //这个函数的作用预览上传的图片 function fileView(filesObj){ //显示上传图片预览 var view=document.querySelector(&qu ...

  8. summernote 不能上传图片_Typora自定义命令自动上传图片

    Typora是我非常喜欢的Markdown编辑器,之前的一个更新,Typora支持了"上传图像"的功能(即写文章时,插入图片自动将其上传至图床),我们可以直接借助IPic.uPic ...

  9. jsp java 上传图片_如何在Jsp上传图片

    1. 新建一个Dynamic Web Project: 2. 键入工程名UploadImage: 3. 选择Dynamic web module version :2.5 4. 点击"Fin ...

最新文章

  1. [短彩信]C#短彩信模块开发设计(1)——架构
  2. Python:docx模块
  3. 【巷子】---vue基于mint-ui三级联动---【vue】
  4. 结构体里有指针 scanf赋值_C++|链表中常见的链表节点指针操作
  5. boost::statechart模块实现延期测试的测试程序
  6. C++打印浮点数时保留两位小数
  7. 60-100-032-使用-MySQL大小写敏感的解决方法
  8. win7下如何建立ftp服务器
  9. String、StringBuffer、StringBuilder之间的区别 简明介绍
  10. iOS蓝牙开发之数据传输精华篇
  11. 使用iWebOffice实现电子签章
  12. 香港流行乐黄金二十年——经典歌手(音乐人)全面回顾 三
  13. 猜拳小游戏(Java代码实现)
  14. 波士顿学院的计算机科学,权威公布:美国最强商学院,TOP5里有你的梦校吗?...
  15. 【独行秀才】macOS Monterey 12.1Beta2(21C5031d)原版镜像
  16. 硕士期间两篇计算机sci二区,实验室两篇论文被SCI 2区期刊Neurocomputing接收
  17. 转载和积累系列 - linux 生成KEY的方法与使用
  18. Win32 API 函数列表
  19. 费城交响乐团与上海爱乐乐团联合举行费城首届中国新年音乐会
  20. 为什么需要API接口开发?

热门文章

  1. Linux系统目录结构和相对-绝对路径
  2. 工厂模式 代理模式 深入理解
  3. Java Proxy代理工厂
  4. C语言刷题(3)——“C”
  5. (华为总裁)任正非的期待:北国之春
  6. C#泛型集合定义及使用
  7. linux编写一个博客脚本,Linux 脚本编写基础 - 凌度 - 博客园.pdf
  8. java 字符串 大括号_字符串解析其中的嵌套大括号
  9. Linux常规问题总结
  10. 衡量人体健康的“十大新标杆” zhuanzai