PHP实现图片的等比缩放和Logo水印功能示例

2025-05-29 0 93

本文实例讲述了PHP实现图片的等比缩放和Logo水印功能。分享给大家供大家参考,具体如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61
/**

* 等比缩放函数(以保存的方式实现)

* @param string $picname 被缩放的处理图片源

* @param int $maxx 缩放后图片的最大宽度

* @param int $maxy 缩放后图片的最大高度

* @param string $pre 缩放后图片名的前缀名

* @return String 返回后的图片名称(带路径),如a.jpg=>s_a.jpg

*/

function imageUpdateSize($picname,$maxx=100,$maxy=100,$pre="s_"){

$info = getimageSize($picname); //获取图片的基本信息

$w = $info[0];//获取宽度

$h = $info[1];//获取高度

//获取图片的类型并为此创建对应图片资源

switch($info[2]){

case 1: //gif

$im = imagecreatefromgif($picname);

break;

case 2: //jpg

$im = imagecreatefromjpeg($picname);

break;

case 3: //png

$im = imagecreatefrompng($picname);

break;

default:

die("图片类型错误!");

}

//计算缩放比例

if(($maxx/$w)>($maxy/$h)){

$b = $maxy/$h;

}else{

$b = $maxx/$w;

}

//计算出缩放后的尺寸

$nw = floor($w*$b);

$nh = floor($h*$b);

//创建一个新的图像源(目标图像)

$nim = imagecreatetruecolor($nw,$nh);

//执行等比缩放

imagecopyresampled($nim,$im,0,0,0,0,$nw,$nh,$w,$h);

//输出图像(根据源图像的类型,输出为对应的类型)

$picinfo = pathinfo($picname);//解析源图像的名字和路径信息

$newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];

switch($info[2]){

case 1:

imagegif($nim,$newpicname);

break;

case 2:

imagejpeg($nim,$newpicname);

break;

case 3:

imagepng($nim,$newpicname);

break;

}

//释放图片资源

imagedestroy($im);

imagedestroy($nim);

//返回结果

return $newpicname;

}

//测试:

//echo imageUpdateSize("./images/bg.jpg",200,200,"ss_"); // ./images/s_bg.jpg

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63
/**

* 为一张图片添加上一个logo图片水印(以保存的方式实现)

* @param string $picname 被处理图片源

* @param string $logo 水印图片

* @param string $pre 处理后图片名的前缀名

* @return String 返回后的图片名称(带路径),如a.jpg=>n_a.jpg

*/

function imageUpdateLogo($picname,$logo,$pre="n_"){

$picnameinfo = getimageSize($picname); //获取图片源的基本信息

$logoinfo = getimageSize($logo); //获取logo图片的基本信息

//var_dump($logoinfo);

//根据图片类型创建出对应的图片源

switch($picnameinfo[2]){

case 1: //gif

$im = imagecreatefromgif($picname);

break;

case 2: //jpg

$im = imagecreatefromjpeg($picname);

break;

case 3: //png

$im = imagecreatefrompng($picname);

break;

default:

die("图片类型错误!");

}

//根据logo图片类型创建出对应的图片源

switch($logoinfo[2]){

case 1: //gif

$logoim = imagecreatefromgif($logo);

break;

case 2: //jpg

$logoim = imagecreatefromjpeg($logo);

break;

case 3: //png

$logoim = imagecreatefrompng($logo);

break;

default:

die("logo图片类型错误!");

}

//执行图片水印处理

imagecopyresampled($im,$logoim,$picnameinfo[0]-$logoinfo[0],$picnameinfo[1]-$logoinfo[1],0,0,$logoinfo[0],$logoinfo[1],$logoinfo[0],$logoinfo[1]);

//输出图像(根据源图像的类型,输出为对应的类型)

$picinfo = pathinfo($picname);//解析源图像的名字和路径信息

$newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];

switch($picnameinfo[2]){

case 1:

imagegif($im,$newpicname);

break;

case 2:

imagejpeg($im,$newpicname);

break;

case 3:

imagepng($im,$newpicname);

break;

}

//释放图片资源

imagedestroy($im);

imagedestroy($logoim);

//返回结果

return $newpicname;

}

//测试

echo imageUpdateLogo("./images/bg2.jpg","./images/s_1.png");

希望本文所述对大家PHP程序设计有所帮助。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP实现图片的等比缩放和Logo水印功能示例 https://www.kuaiidc.com/94737.html

相关文章

发表评论
暂无评论