【PHP】【PHP100改进系列】上传图片水印、缩略图、图片大小预处理类

本文在学习PHP100的基础上,提高代码的适用兼容性,封装一部分常用功能。

下面的代码并没有完全封装,只是做成了类的形式,为的就是给各位留出更多自定义函数如返回产生图片名称、路径、大小,新图片的名称等的位置,方面开发自己的类。

下面是代码:注释充分,无须解释!

代码
 
   
<? php
/*
* Created on 2010-10-27
* BY��QQ542900563
* Copyrights Reserved 2000-2020
* 本例演示图片水、缩略图的生成办法
*/

// 定义参数:
$old = " liu.jpg " ; // 要修改的图
$water = " m.png " ; // 水印图
$Max_W = 600 ; // 照片的最大宽度
$Max_H = 400 ; // 照片的最大高度
$Min_W = 100 ; // 缩略图宽
$Min_H = 80 ; // 缩略图高



//分别载入两张图片

$im = imagecreatefromjpeg( $old );
$img2 = imagecreatefrompng( $water );

// 取得各自的长宽,计算位置
$im_WH = getimagesize ( $old );
$im_W = $im_WH [ 0 ];
$im_H = $im_WH [ 1 ];

$img2_WH = getimagesize ( $water );
$img2_W = $img2_WH [ 0 ];
$img2_H = $img2_WH [ 1 ];

// 定义存放的位置
$NewX = $im_W - $img2_W ;
$NewY = $im_H - $img2_H ;

// 填充水印
imagecopy( $im , $img2 , $NewX , $NewY , 0 , 0 , $img2_W , $img2_H );

// 控制图片大小并生成缩略图

//1.计算大图像生成标准图像和缩略图的宽高

$New_W = 0 ; // 标准图像的宽
$New_H = 0 ; // 标准图像的高
$New_M_W = 0 ; // 缩略图的宽
$New_M_H = 0 ; // 缩略图的高

if ( $im_W > $Max_W || $im_H > $Min_H )
{
if ( $im_W / $im_H >= $Max_W / $Max_H )
{
$New_W = $Max_W ;
$New_H = $Max_H * $im_W / $im_H ;
$New_M_W = $Min_W ;
$New_M_H = $Min_H * $im_W / $im_H ;

}
else
{
$New_H = $Max_H ;
$New_W = $Max_H * $im_W / $im_H ;
$New_M_H = $Min_H ;
$New_M_W = $Min_H * $im_W / $im_H ;
}
}
else
{

$New_W = $im_W ;
$New_H = $im_H ;

if ( $im_W / $im_H >= $Max_W / $Max_H )
{
$New_M_W = $Min_W ;
$New_M_H = $Min_H * $im_W / $im_H ;
}
else
{
$New_M_H = $Min_H ;
$New_M_W = $Min_H * $im_W / $im_H ;
}

}

// 2.生成标准大图
$Standard_img = imagecreatetruecolor( $New_W , $New_H );
imagecopyresized (
$Standard_img , $im , 0 , 0 , 0 , 0 , $New_W , $New_H , $im_W , $im_H );
imagejpeg(
$Standard_img , " New " . $old ); // 在原图后面加上New作为输出文件名

//3.生成缩略图


$Thumbnail_img = imagecreatetruecolor( $New_M_W , $New_M_H );
imagecopyresized(
$Thumbnail_img , $im , 0 , 0 , 0 , 0 , $New_M_W , $New_M_H , $im_W , $im_H );
imagejpeg(
$Thumbnail_img , " Thumb " . $old );


// header("Content-type:image/jpeg");
//imagejpeg($im);

?>

 

转载于:https://www.cnblogs.com/long_/archive/2010/10/27/1862914.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值