PHP上传图片进行等比缩放可增加水印功能_php技巧

啥也不说,直接上代码,大家可以自行添加增加水印功能:

复制代码 代码如下:

<?php
/**
*
* @author zhao jinhan
* @date 2014年1月13日11:54:30
* @email xb_zjh@126.com
*
*/
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 "生成后的图片为:<img src='".$thumb_file."' />";
}else{
echo $_FILES['img']['error'];
return;
}
}else{
echo "图片格式不正确,请上传jpg,gif,png的格式!";
return;
}

}else{
echo <<<EOT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>缩放图片保存成正方形</title>
</head>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<div>
<label>上传一张图片:</label>
<input type="file" name="img" />
</div>
<div>
<label>生成缩略图的宽高(单位px):</label>
<input type="text" name="width-height" value="300" />
</div>
<div>
<label>文件大小上限:</label>
<input type="text" name="size" value="2M" />
</div>
<div><input type="submit" name="submit" value="提交" /></div>
</form>
</body>
</html>
EOT;
}

时间: 2024-09-10 18:03:14

PHP上传图片进行等比缩放可增加水印功能_php技巧的相关文章

安卓开源画图app“MK画图”增加水印功能,呵呵

 安卓开源画图app"MK画图"增加水印功能,呵呵 源码路径:https://github.com/JumpingYang001/markers-cn 源码和apk百度云下载地址:http://pan.baidu.com/s/1kVqGtwV Markers画图中文版 Forked from https://github.com/dsandler/markers, but a Chinese version:Markers画图中文版 Release apk https://gith

用C/C++扩展你的PHP 为你的php增加功能_php技巧

英文版下载: PHP 5 Power Programming http://www.jb51.net/books/61020.html PHP取得成功的一个主要原因之一是她拥有大量的可用扩展.web开发者无论有何种需求,这种需求最有可能在PHP发行包里找到.PHP发行包包括支持各种数据库,图形文件格式,压缩,XML技术扩展在内的许多扩展. 扩展API的引入使PHP3取得了巨大的进展,扩展API机制使PHP开发社区很容易的开发出几十种扩展.现在,两个版本过去了,API仍然和PHP3时的非常相似.扩

php 图片上传代码(具有生成缩略图与增加水印功能)

   代码如下 复制代码 class upfile {  public $filepath = "www.111cn.net/"; //上传文件存放文件夹  public $filesize = 1000000; //允许上传的大小  //如果要修改允许上传文件的类型  请搜索 [ switch ($upfiletype) { //文件类型  ]  public $reimagesize = array (   true, //是否生成缩略图   400, //缩略图宽   300,/

fck 上传图片增加水印代码修改

function getfolders( $resourcetype, $currentfolder ) {  // map the virtual path to the local server path.  $sserverdir = servermapfolder( $resourcetype, $currentfolder, 'getfolders' ) ;  // array that will hold the folders names.  $afolders = array()

iOS版谷歌地球应用更新 增加街景功能

腾讯数码讯 今天,谷歌公司针对iOS版谷歌地球(Google Earth)应用推出了全新版本.新版本最大的变化就是增加了谷歌街景(Street View)功能.一直以来,iOS版的谷歌地图用户如果想要使用谷歌街景功能,不得不需要面对在谷歌地图和谷歌地球应用之间来回切换的尴尬.而今天谷歌针对此问题进行了回应,推出了内置街景功能的谷歌地球应用.全新内置的街景功能在谷歌地球卫星图像的基础上首次引入了之前在网页版中存在的 缩放功能.如果该区域支持街景模式,谷歌地球会通过蓝色标签进行标记,此时用户可以通过

php图片处理类(生成缩略图,增加水印,获取图片信息)

本文章提供这款图片处理类,他可以做的事情有把图片生成缩略图,可能给图片增加水印以及获取图片信息,算是比较实用代码又简洁的函数*/  代码如下 复制代码 class image {  public $info=array();  function __construct()  {   !extension_loaded('gd') && exit("www.111cn.net提示:服务器环境不支持gd库");   return true;  }  function ima

定制AjaxControlToolkit(2):给CalendarExtender增加清除功能

在定制AjaxControlToolkit(1):使一个CalendarExtender对应N个TextBox 的最后,为了展示主题,我贴了一张截图,也许大家注意到了,我的截图的右下 角有一个"清除"按钮,这就是本文要介绍的更改. 在我们的项目中,大多数的录入日期的文本框是不允许用户手输的,只能通 过 点击--弹出日期选择框的方式选择,这样可以避免烦人的检查动作,当然也可以 用MaskedEdit过滤,不过感觉没必要,有日期控件了,就不弄那么复杂了,另外 ,项目中大部分代码是以前写的,

Fireworks教程:gif动画图片批量增加水印

  gif动画图片批量增加水印效果.这个功能对于个人站长是非常实用的. 处理后 1.用firework打开gif文件. 2.在gif上面加上水印效果(打上文字,设置透明度) 3.在历史面板上保存动作.(保存为33) 4.打开firework的文件菜单 选择-批处理 5.选择你要批处理的文件(增加进来) 6.选择你刚刚保存的动作,和选择你处理完图片保存的目录. 7.批处理,完成.

php 使用GD库为页面增加水印示例代码

 这篇文章主要介绍了php 使用GD库为页面增加水印的具体实现,需要的朋友可以参考下  代码如下: <?php  header ("Content-type: image/png");  $conn = MYSQL_connect("localhost", "root", ""); //连接数据库  $colname_rs_article = $_GET['id']; //获取参数id    mysql_select_d