1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码【PHP】

php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码【PHP】

时间:2024-07-19 04:27:02

相关推荐

php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码【PHP】

后端开发|php教程

php,gd2

后端开发-php教程

wemall商城 6.0 源码,树莓派1 ubuntu,阿帕奇和tomcat的关系,数码小爬虫,welcome.php,seo的优化组成部分是什么lzw

<?php

//上传文件类型列表

$uptypes=array(

image/jpg,

image/jpeg,

image/png,

image/pjpeg,

image/gif,

image/bmp,

image/x-png

);

$max_file_size = 200000; //上传文件大小限制, 单位BYTE

$path_im = "prod_img/"; //生成大图保存文件夹路径

$path_sim = "prod_simg/"; //缩略图保存文件夹路径

$watermark = 1; //是否加水印(1为加水印,其他为不加水印);

$watertype = 1; //水印类型(1为文字,2为图片)

$waterstring = "[url=/]/[/url]"; //水印字符串

$waterimg = "water.jpg"; //水印图片文件路径

$waterclearly = 100; //水印透明度0-100,数字小透明高

$imclearly = 100; //图片清晰度0-100,数字越大越清晰,文件尺寸越大

$simclearly = 75; //缩略图清晰度0-100,数字越大越清晰,文件尺寸越大

$smallmark = 1; //是否生成缩略图(1为加生成,其他为不);

$dst_sw = 80; //定义缩略图宽度,高度我采用等比例缩放,所以只要比较宽度就可以了

?>

上传文件:

允许上传的文件类型为:

<?php

if ($_SERVER[REQUEST_METHOD] == POST)

{

if (!is_uploaded_file($_FILES["upfile"][tmp_name]))

//是否存在文件

{

echo "图片不存在!";

exit;

}

$file = $_FILES["upfile"];

if($max_file_size < $file["size"])

//检查文件大小

{ $max_file_size = $max_file_size/1000;

echo "文件太大,超过 ".$max_file_size." KB!";

exit;

}

if(!in_array($file["type"],$uptypes))

//检查文件类型

{

echo "文件类型不符!".$file["type"];

exit;

}

if(!file_exists($path_im))

//检查上传目录是否存在,不存在创建

{

mkdir($path_im);

}

if(!file_exists($path_sim))

//检查缩略图目录是否存在,不存在创建

{

mkdir($path_sim);

}

$filename = $file["tmp_name"];

$im_size = getimagesize($filename);

$src_w = $im_size[0];

$src_h = $im_size[1];

$src_type = $im_size[2];

$pinfo = pathinfo($file["name"]);

$filetype = $pinfo[extension];

$all_path = $path_im.time().".".$filetype; //路径+文件名,目前以上传时间命名

if (file_exists($all_path))

{

echo "同名文件已经存在了";

exit;

}

if(!move_uploaded_file ($filename,$all_path))

{

echo "移动文件出错";

exit;

}

$pinfo = pathinfo($all_path);

$fname = $pinfo[basename];

echo "已经成功上传

文件名: ".$all_path."

";

echo "宽度:".$src_w."px ";

echo "长度:".$src_h."px ";

echo "

大小:".$file["size"]." bytes";

switch($src_type)//判断源图片文件类型

{

case 1://gif

$src_im = imagecreatefromgif($all_path);//从源图片文件取得图像

break;

case 2://jpg

$src_im = imagecreatefromjpeg($all_path);

break;

case 3://png

$src_im = imagecreatefrompng($all_path);

break;

//case 6:

//$src_im=imagecreatefromwbmp($all_path);

//break;

default:

die("不支持的文件类型");

exit;

}

if($watermark == 1)

{

//$iinfo = getimagesize($all_path,$iinfo);

$dst_im = imagecreatetruecolor($src_w,$src_h);

//根据原图尺寸创建一个相同大小的真彩色位图

$white = imagecolorallocate($dst_im,255,255,255);//白

//给新图填充背景色

$black = imagecolorallocate($dst_im,0,0,0);//黑

$red = imagecolorallocate($dst_im,255,0,0);//红

$orange = imagecolorallocate($dst_im,255,85,0);//橙

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

imagecopymerge($dst_im,$src_im,0,0,0,0,$src_w,$src_h,100);//原图图像写入新建真彩位图中

//imagefilledrectangle($dst_im,1,$src_h-15,80,$src_h,$white);

switch($watertype)

{

case 1: //加水印字符串

imagestring($dst_im,5,5,$src_h-20,$waterstring,$orange);//文字水印,字体5号颜色橙色,位于背景图左下角

break;

case 2: //加水印图片

$lim_size = getimagesize($waterimg); //取得水印图像尺寸,信息

switch($lim_size[2]) //判断水印图片文件类型

{

case 1://gif

$src_lim = imagecreatefromgif($waterimg); //取得水印图像

break;

case 2://jpg

$src_lim = imagecreatefromjpeg($waterimg);

break;

case 3://png

$src_lim = imagecreatefrompng($waterimg);

break;

//case 6:

//$src_im=imagecreatefromwbmp($waterimg);

//break;

default:

die("不支持的文件类型");

exit;

}

$src_lw = ($src_w-$lim_size[0])/2; //水印位于背景图正中央width定位

$src_lh = ($src_h-$lim_size[1])/2; //height定位

imagecopymerge($dst_im,$src_lim,$src_lw,$src_lh,0,0,$lim_size[0],$lim_size[1],$waterclearly);// 合并两个图像,设置水印透明度$waterclearly

imagedestroy($src_lim);

break;

}

switch($src_type)

{

case 1:

imagegif($dst_im,$all_path,$imclearly);//生成gif文件,图片清晰度0-100

break;

case 2:

imagejpeg($dst_im,$all_path,$imclearly);//生成jpg文件,图片清晰度0-100

break;

case 3:

imagepng($dst_im,$all_path,$imclearly);//生成png文件,图片清晰度0-100

break;

//case 6:

//imagewbmp($dst_im,$all_path);

break;

}

//释放缓存

imagedestroy($dst_im);

}

if($smallmark == 1)

{

$sall_path = $path_sim.time().".".$filetype;

if (file_exists($sall_path))

{

echo "同名文件已经存在了";

exit;

}

if($src_w <= $dst_sw) // 原图尺寸 <= 缩略图尺寸

{

$dst_sim = imagecreatetruecolor($src_w,$src_h); //新建缩略图真彩位图

imagecopymerge($dst_sim,$src_im,0,0,0,0,$src_w,$src_h,100); //原图图像写入新建真彩位图中

}

if($src_w > $dst_sw) // 原图尺寸 > 缩略图尺寸

{

$dst_sh = $dst_sw/$src_w*$src_h;

$dst_sim = imagecreatetruecolor($dst_sw,$dst_sh); //新建缩略图真彩位图(等比例缩小原图尺寸)

imagecopyresampled($dst_sim,$src_im,0,0,0,0,$dst_sw,$dst_sh,$src_w,$src_h); //原图图像写入新建真彩位图中

}

switch($src_type)

{

case 1:

imagegif($dst_sim,$sall_path,$simclearly);//生成gif文件,图片清晰度0-100

break;

case 2:

imagejpeg($dst_sim,$sall_path,$simclearly);//生成jpg文件,图片清晰度0-100

break;

case 3:

imagepng($dst_sim,$sall_path,$simclearly);//生成png文件,图片清晰度0-100

break;

//case 6:

//imagewbmp($dst_sim,$sall_path);

break;

}

//释放缓存

imagedestroy($dst_sim);

}

//释放缓存

imagedestroy($src_im);

}

?>

php等比例生成缩略图函数2

源码交易商城,新款mac支持vscode吗,ubuntu 建快捷方式,tomcat 未启动,sqlite期刊,网页设计三剑客中文…,虚拟主机和数据库,阿里云服务器带宽峰值,vc代码提示插件,组态前端框架,发爬虫,php3,seo采集工具,springboot使用脚本,html5 标签效果,手机网站 触屏,js网页特效function,dede模板标签arclist实现分页,php 后台 跳转代码u,jquery 单页面特效,班级管理系统图片,眼睛定位程序lzw

function reSizeImg($imgSrc, $resize_width, $resize_height, $isCut=false) {

//图片的类型

$type = substr ( strrchr ( $imgSrc, "." ), 1 );

//初始化图象

if ($type == "jpg") {

$im = imagecreatefromjpeg ( $imgSrc );

}

if ($type == "gif") {

$im = imagecreatefromgif ( $imgSrc );

}

if ($type == "png") {

$im = imagecreatefrompng ( $imgSrc );

}

//目标图象地址

$full_length = strlen ( $imgSrc );

$type_length = strlen ( $type );

$name_length = $full_length - $type_length;

$name = substr ( $imgSrc, 0, $name_length - 1 );

$dstimg = $name . "_s." . $type;

$width = imagesx ( $im );

$height = imagesy ( $im );

//生成图象

//改变后的图象的比例

$resize_ratio = ($resize_width) / ($resize_height);

//实际图象的比例

$ratio = ($width) / ($height);

if (($isCut) == 1) //裁图

{

if ($ratio >= $resize_ratio) //高度优先

{

$newimg = imagecreatetruecolor ( $resize_width, $resize_height );

imagecopyresampled ( $newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, (($height) * $resize_ratio), $height );

ImageJpeg ( $newimg, $dstimg );

}

if ($ratio < $resize_ratio) //宽度优先

{

$newimg = imagecreatetruecolor ( $resize_width, $resize_height );

imagecopyresampled ( $newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, $width, (($width) / $resize_ratio) );

ImageJpeg ( $newimg, $dstimg );

}

} else //不裁图

{

if ($ratio >= $resize_ratio) {

$newimg = imagecreatetruecolor ( $resize_width, ($resize_width) / $ratio );

imagecopyresampled ( $newimg, $im, 0, 0, 0, 0, $resize_width, ($resize_width) / $ratio, $width, $height );

ImageJpeg ( $newimg, $dstimg );

}

if ($ratio < $resize_ratio) {

$newimg = imagecreatetruecolor ( ($resize_height) * $ratio, $resize_height );

imagecopyresampled ( $newimg, $im, 0, 0, 0, 0, ($resize_height) * $ratio, $resize_height, $width, $height );

ImageJpeg ( $newimg, $dstimg );

}

}

ImageDestroy ( $im );

}

android 导航页源码下载,ubuntu路径跟踪网络,与tomcat相关的进程,爬虫系统危害,php异常级别,潍城seo优化推广多少钱lzw

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。