首頁 後端開發 php教程 php 用GD庫產生高品質的縮圖範例程式碼

php 用GD庫產生高品質的縮圖範例程式碼

Jul 12, 2017 pm 03:07 PM
php 範例 高品質

在網站上GD庫通常用來產生縮圖,或是用來為圖片加浮水印,或是用來產生漢字驗證碼,或是對網站資料產生報表等。在PHP處理影像,可使用GD庫,而GD庫開始時是支援GIF的,但由於GIF使用了有版權爭議的LZW演算法,會引起法律問題,於是從GD 庫1.6 版起所有的GIF 支援都移除了,但又在GD 庫2.0.28 版起又加回來了。如果使用二者之間版本的 GD 函式庫時 GIF 相關函數不可用。本篇主要介紹php 以GD函式庫產生高品質的縮圖的範例程式碼

以下是PHP原始碼(ResizeImage.php)。 

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

<?php

$FILENAME="image.thumb";

// 生成图片的宽度

$RESIZEWIDTH=400;

// 生成图片的高度

$RESIZEHEIGHT=400;

 

function ResizeImage($im,$maxwidth,$maxheight,$name){

$width = imagesx($im);

$height = imagesy($im);

if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){

if($maxwidth && $width > $maxwidth){

$widthratio = $maxwidth/$width;

$RESIZEWIDTH=true;

}

if($maxheight && $height > $maxheight){

$heightratio = $maxheight/$height;

$RESIZEHEIGHT=true;

}

if($RESIZEWIDTH && $RESIZEHEIGHT){

if($widthratio < $heightratio){

$ratio = $widthratio;

}else{

$ratio = $heightratio;

}

}elseif($RESIZEWIDTH){

$ratio = $widthratio;

}elseif($RESIZEHEIGHT){

$ratio = $heightratio;

}

$newwidth = $width * $ratio;

$newheight = $height * $ratio;

if(function_exists("imagecopyresampled")){

$newim = imagecreatetruecolor($newwidth, $newheight);

imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

}else{

$newim = imagecreate($newwidth, $newheight);

imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

}

ImageJpeg ($newim,$name . ".jpg");

ImageDestroy ($newim);

}else{

ImageJpeg ($im,$name . ".jpg");

}

}

 

if($_FILES['image']['size']){

if($_FILES['image']['type'] == "image/pjpeg"){

$im = imagecreatefromjpeg($_FILES['image']['tmp_name']);

}elseif($_FILES['image']['type'] == "image/x-png"){

$im = imagecreatefrompng($_FILES['image']['tmp_name']);

}elseif($_FILES['image']['type'] == "image/gif"){

$im = imagecreatefromgif($_FILES['image']['tmp_name']);

}

if($im){

if(file_exists("$FILENAME.jpg")){

unlink("$FILENAME.jpg");

}

ResizeImage($im,$RESIZEWIDTH,$RESIZEHEIGHT,$FILENAME);

ImageDestroy ($im);

}

}

?>

登入後複製

以下是測試程式碼(demo.php) 程式碼如下:

1

2

3

4

5

6

7

8

9

10

<?php

include('ResizeImage.php');

if(!empty($_POST)){

echo($FILENAME.".jpg?cache=".rand(0,999999));

}

?>

<form name="test" action="?submit=true" enctype="multipart/form-data" method="post" >

<input type="file" name="image" size="50" value="浏览"><p>

<input type="submit" value="上传图片">

</form>

登入後複製


以上是php 用GD庫產生高品質的縮圖範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

See all articles