Home  >  Article  >  Backend Development  >  How to batch generate image thumbnails in PHP_PHP tutorial

How to batch generate image thumbnails in PHP_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 09:50:07968browse

How to batch generate image thumbnails in PHP

This article describes the method of batch generating image thumbnails in PHP. Share it with everyone for your reference. The details are as follows:

?

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

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

//Use PHP to batch generate image thumbnails

function mkdirs($dirname,$mode=0777)

//Create directory (directory, [mode])

{

if(!is_dir($dirname))

{

mkdirs($dirname,$mode); //If the directory does not exist, create it recursively

return mkdir($dirname,$mode);

}

return true;

}

function savefile($filename,$content='')

//Save file(file, [content])

{

if(function_exists(file_put_contents))

{

file_put_contents($filename,$content);

}

else

{

$fp=fopen($filename,"wb");

fwrite($fp,$content);

fclose($fp);

}

}

function getsuffix($filename) //Get the file name suffix

{

return end(explode(".",$filename));

}

function checksuffix($filename,$arr) //Whether it is an allowed type (current, allowed)

{

if(!is_array($arr))

{

$arr=explode(",",str_replace(" ","",$arr));

}

return in_array($filename,$arr) ? 1 : 0;

}

class image

{

var $src; //Source address

var $newsrc; //New image path (after localization)

var $allowtype=array(".gif",".jpg",".png",".jpeg"); //Allowed image types

var $regif=0; //Whether to abbreviate GIF, if it is 0, it will not be processed

var $keep=0; //Whether to keep the source file (1 means keeping, 0 means MD5)

var $over=0; //Whether existing pictures can be overwritten, if it is 0, it cannot be overwritten

var $dir; //image source directory

var $newdir; //Processed directory

function __construct($olddir=null,$newdir=null)

{

$this->dir=$olddir ? $olddir : "./images/temp";

$this->newdir=$newdir ? $newdir : "./images/s";

}

function reNames($src)

{

$md5file=substr(md5($src),10,10).strrchr($src,".");

//After the MD5 file name (for example: 3293okoe.gif)

$md5file=$this->w."_".$this->h."_".$md5file;

//Processed file name

return $this->newdir."/".$md5file;

//Save the source image and MD5 file name to a new directory

}

function Mini($src,$w,$h,$q=80)

//Generate thumbnail Mini (image address, width, height, quality)

{

$this->src=$src;

$this->w=$w;

$this->h=$h;

if(strrchr($src,".")==".gif" && $this->regif==0)

//Whether to process GIF images

{

return $this->src;

}

if($this->keep==0) //Whether to keep the source file, not kept by default

{

$newsrc=$this->reNames($src); //Renamed file address

}

else //Keep original name

{

$src=str_replace("\","/",$src);

$newsrc=$this->newdir.strrchr($src,"/");

}

if(file_exists($newsrc) && $this->over==0)

//If it already exists, return the address directly

{

return $newsrc;

}

if(strstr($src,"http://") && !strstr($src,$_SERVER['HTTP_HOST']))

//If it is a network file, save it first

{

$src=$this->getimg($src);

}

$arr=getimagesize($src); //Get image attributes

$width=$arr[0];

$height=$arr[1];

$type=$arr[2];

switch($type)

{

case 1: //1 = GIF,

$im=imagecreatefromgif($src);

break;

case 2: //2 = JPG

$im=imagecreatefromjpeg($src);

break;

case 3: //3 = PNG

$im=imagecreatefrompng($src);

break;

default:

return 0;

}

//Process thumbnails

$nim=imagecreatetruecolor($w,$h);

$k1=round($h/$w,2);

$k2=round($height/$width,2);

if($k1<$k2)

{

$width_a=$width;

$height_a=round($width*$k1);

$sw=0;

$sh=($height-$height_a)/2;

}

else

{

$width_a=$height/$k1;

$height_a=$height;

$sw=($width-$width_a)/2;

$sh = 0;

}

//生成图片

if(function_exists(imagecopyresampled))

{

imagecopyresampled($nim,$im,0,0,$sw,$sh,$w,$h,$width_a,$height_a);

}

else

{

imagecopyresized($nim,$im,0,0,$sw,$sh,$w,$h,$width_a,$height_a);

}

if(!is_dir($this->newdir))

{

mkdir($this->newdir);

}

switch($type) //保存图片

{

case 1:

$rs=imagegif($nim,$newsrc);

break;

case 2:

$rs=imagejpeg($nim,$newsrc,$q);

break;

case 3:

$rs=imagepng($nim,$newsrc);

break;

default:

return 0;

}

return $newsrc; //返回处理后路径

}

function getimg($filename)

{

$md5file=$this->dir."/".substr(md5($filename),10,10).strrchr($filename,".");

if(file_exists($md5file))

{

return $md5file;

}

//开始获取文件,并返回新路径

$img=file_get_contents($filename);

if($img)

{

if(!is_dir($this->dir))

{

mkdir($this->dir);

}

savefile($md5file,$img);

return $md5file;

}

}

function reImg($src,$w,$h,$q)

//转换缩略图(文件名和结构不变)

{

$this->keep=1;

return $this->Mini($src,$w,$h,$q);

//return 生成的地址

}

}

$image=new image();

echo $image->reImg("images/zht.jpg",75,75,80);

echo "
";

echo $image->reImg("images/m8920.jpg",75,75,80);

echo "
";

echo $image->getimg("./images/s/zht.jpg");

?>

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

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1018374.htmlTechArticlePHP批量生成图片缩略图的方法 本文实例讲述了PHP批量生成图片缩略图的方法。分享给大家供大家参考。具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12...
Statement:
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