Home > Backend Development > PHP Tutorial > PHP that supports png transparent images to generate thumbnail class sharing_PHP tutorial

PHP that supports png transparent images to generate thumbnail class sharing_PHP tutorial

WBOY
Release: 2016-07-13 10:07:29
Original
957 people have browsed it

Sharing of the php generated thumbnail class that supports png transparent images

This article mainly introduces the sharing of the php generated thumbnail class that supports png transparent images. The code of this article is based on the GD2 graphics library , support the generation of thumbnails from png transparent images, friends in need can refer to

Note: This function depends on the GD2 graphics library

I recently wanted to use PHP to generate thumbnails. I searched online and found this article: PHP generates image thumbnails

After trying it out, I found the following problems:

1. The thumbnails generated from png images are in jpg format

2. The thumbnail generated from the png image has no transparent (semi-transparent) effect (filled with black background)

3. The code syntax is relatively old

Therefore, we simply modified and optimized it based on this version.

PHP generate thumbnail class

?

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

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

/*

* desc: Resize Image(png, jpg, gif)

* author: Brother Lu ten years later

* date: 2014.11.13

*/

class ResizeImage {

//Picture type

private $type;

//Actual width

private $width;

//Actual height

private $height;

//Changed width

private $resize_width;

//Changed height

private $resize_height;

//Whether to crop the image

private $cut;

//Source image

private $srcimg;

//Target image address

private $dstimg;

//Temporarily created image

private $im;

function __construct($imgPath, $width, $height, $isCut, $savePath) {

$this->srcimg = $imgPath;

$this->resize_width = $width;

$this->resize_height = $height;

$this->cut = $isCut;

//Type of picture

$this->type = strtolower(substr(strrchr($this->srcimg,"."),1));

//Initialize image

$this->initi_img();

//Target image address

$this -> dst_img($savePath);

//--

$this->width = imagesx($this->im);

$this->height = imagesy($this->im);

//Generate image

$this->newimg();

ImageDestroy ($this->im);

}

private function newimg() {

//The proportion of the changed image

$resize_ratio = ($this->resize_width)/($this->resize_height);

//Proportion of actual image

$ratio = ($this->width)/($this->height);

if($this->cut) {

//Crop image

$newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);

if($this->type=="png") {

imagefill($newimg, 0, 0, imagecolorallocatealpha($newimg, 0, 0, 0, 127));

}

if($ratio>=$resize_ratio) {

//High priority

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

} else {

//Width priority

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

}

} else {

//No cropping

if($ratio>=$resize_ratio) {

$newimg = imagecreatetruecolor($this->resize_width,($this->resize_width)/$ratio);

if($this->type=="png") {

imagefill($newimg, 0, 0, imagecolorallocatealpha($newimg, 0, 0, 0, 127));

}

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

} else {

$newimg = imagecreatetruecolor(($this->resize_height)*$ratio,$this->resize_height);

if($this->type=="png") {

imagefill($newimg, 0, 0, imagecolorallocatealpha($newimg, 0, 0, 0, 127));

}

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

}

}

if($this->type=="png") {

imagesavealpha($newimg, true);

imagepng ($newimg,$this->dstimg);

} else {

imagejpeg ($newimg,$this->dstimg);

}

}

//Initialize image

private function initi_img() {

if($this->type=="jpg") {

$this->im = imagecreatefromjpeg($this->srcimg);

}

if($this->type=="gif") {

$this->im = imagecreatefromgif($this->srcimg);

}

if($this->type=="png") {

$this->im = imagecreatefrompng($this->srcimg);

}

}

//Image target address

private function dst_img($dstpath) {

$full_length = strlen($this->srcimg);

$type_length = strlen($this->type);

$name_length = $full_length-$type_length;

$name = substr($this->srcimg,0,$name_length-1);

$this->dstimg = $dstpath;

}

}

?>

Use

When using it, just call the constructor of the class directly. The constructor is as follows:

$resizeimage = new resizeimage($imgPath, $width, $height, $isCut, $savePath);

Parameters
$imgPath: original image address

$width: thumbnail width

$height: Thumbnail height

$isCut: Whether to cut, bool value

$savePath: thumbnail address (can be the same as the original image address)

Example

?

1

2

3

4

5

6

7

8

9

10

include "ResizeImage.php";

//jpg

$jpgResize = new ResizeImage("img/test_1920_1200.jpg", 320, 240, false, "img/test_320_240.jpg");

//png

$pngResize = new ResizeImage("img/test_1024_746.png", 320, 240, false, "img/test_320_240.png");

?>

1 2

3

4 5

6 7

89 10
include "ResizeImage.php"; //jpg

$jpgResize = new ResizeImage("img/test_1920_1200.jpg", 320, 240, false, "img/test_320_240.jpg");
<🎜> <🎜>//png<🎜> <🎜>$pngResize = new ResizeImage("img/test_1024_746.png", 320, 240, false, "img/test_320_240.png");<🎜> <🎜> <🎜> <🎜>?>
Effect http://www.bkjia.com/PHPjc/955276.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/955276.htmlTechArticleSupport the php generation of thumbnail class sharing for png transparent images. This article mainly introduces the php generation that supports png transparent images. Thumbnail sharing, the code in this article is based on the GD2 graphics library, which supports png transparency...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template