<span style="color: #008080;"> 1</span> <span style="color: #000000;">php </span><span style="color: #008080;"> 2</span> <span style="color: #008000;">//</span><span style="color: #008000;">1. 图片背景管理</span> <span style="color: #008080;"> 3</span> <span style="color: #008000;">/*</span><span style="color: #008000;"> imagecreatefromjpeg($filename) 从jpeg文件或者url新建一图像 </span><span style="color: #008080;"> 4</span> <span style="color: #008000;"> * imagecreatefrompng($filename) 从png文件或者url新建一图象 </span><span style="color: #008080;"> 5</span> <span style="color: #008000;"> * imagecreatefromgif($filename) 从gif文件或者url新建一图像 </span><span style="color: #008080;"> 6</span> <span style="color: #008000;"> * 用完之后要用imagedestroy()函数进行销毁 </span><span style="color: #008080;"> 7</span> <span style="color: #008000;"> * getimagesize($filename) 返回数组,0宽1高,2类型(1GIF,2JPG,3PNG,4SWF..),3是可用于img标记的文本字符串(height="x" width="y") </span><span style="color: #008080;"> 8</span> <span style="color: #008000;">*/</span> <span style="color: #008080;"> 9</span> <span style="color: #008000;">//</span><span style="color: #008000;">该方法用于自动识别类型并打开图片,使用传入的func函数操作图片,vars是参数列表 </span><span style="color: #008080;"> 10</span> <span style="color: #008000;"> //如果返回的是不是原image,要在func中摧毁image</span> <span style="color: #008080;"> 11</span> <span style="color: #0000ff;">function</span> imagego(<span style="color: #800080;">$filename</span>, <span style="color: #800080;">$func</span>, <span style="color: #800080;">$vars</span><span style="color: #000000;">){ </span><span style="color: #008080;"> 12</span> <span style="color: #0000ff;">list</span>(<span style="color: #800080;">$width</span>, <span style="color: #800080;">$height</span>, <span style="color: #800080;">$type</span>, <span style="color: #800080;">$attr</span>) = <span style="color: #008080;">getimagesize</span>(<span style="color: #800080;">$filename</span><span style="color: #000000;">); </span><span style="color: #008080;"> 13</span> <span style="color: #800080;">$types</span> = <span style="color: #0000ff;">array</span>(1=>"gif", 2=>"jpeg", 3=>"png"<span style="color: #000000;">); </span><span style="color: #008080;"> 14</span> <span style="color: #008000;">//</span><span style="color: #008000;">组合创建图像函数名</span> <span style="color: #008080;"> 15</span> <span style="color: #800080;">$createfrom</span> = "imagecreatefrom".<span style="color: #800080;">$types</span>{<span style="color: #800080;">$type</span><span style="color: #000000;">}; </span><span style="color: #008080;"> 16</span> <span style="color: #800080;">$image</span> = <span style="color: #800080;">$createfrom</span>(<span style="color: #800080;">$filename</span><span style="color: #000000;">); </span><span style="color: #008080;"> 17</span> <span style="color: #008000;">//</span><span style="color: #008000;">对该图片进行操作</span> <span style="color: #008080;"> 18</span> <span style="color: #800080;">$image</span> = <span style="color: #800080;">$func</span>(<span style="color: #800080;">$image</span>, <span style="color: #800080;">$width</span>, <span style="color: #800080;">$height</span>, <span style="color: #800080;">$type</span>, <span style="color: #800080;">$vars</span><span style="color: #000000;">); </span><span style="color: #008080;"> 19</span> <span style="color: #008000;">//</span><span style="color: #008000;">组合输出图像函数名</span> <span style="color: #008080;"> 20</span> <span style="color: #800080;">$output</span> = "image".<span style="color: #800080;">$types</span>{<span style="color: #800080;">$type</span><span style="color: #000000;">}; </span><span style="color: #008080;"> 21</span> <span style="color: #800080;">$filename_s</span> = <span style="color: #008080;">preg_split</span>("/\\./", <span style="color: #800080;">$filename</span><span style="color: #000000;">); </span><span style="color: #008080;"> 22</span> <span style="color: #800080;">$filename</span> = <span style="color: #800080;">$filename_s</span>{0}."_${func}.".<span style="color: #800080;">$filename_s</span>{1<span style="color: #000000;">}; </span><span style="color: #008080;"> 23</span> <span style="color: #800080;">$output</span>(<span style="color: #800080;">$image</span>, <span style="color: #800080;">$filename</span><span style="color: #000000;">); </span><span style="color: #008080;"> 24</span> <span style="color: #008080;"> 25</span> imagedestroy(<span style="color: #800080;">$image</span><span style="color: #000000;">); </span><span style="color: #008080;"> 26</span> <span style="color: #000000;"> } </span><span style="color: #008080;"> 27</span> <span style="color: #008000;">//</span><span style="color: #008000;">该方法用于在图片上加上字符串,传入一个参数表示添加的字符串</span> <span style="color: #008080;"> 28</span> <span style="color: #0000ff;">function</span> imageaddstring(<span style="color: #800080;">$image</span>, <span style="color: #800080;">$width</span>, <span style="color: #800080;">$height</span>, <span style="color: #800080;">$type</span>, <span style="color: #800080;">$vars</span><span style="color: #000000;">){ </span><span style="color: #008080;"> 29</span> <span style="color: #800080;">$string</span> = <span style="color: #800080;">$vars</span>{0<span style="color: #000000;">}; </span><span style="color: #008080;"> 30</span> <span style="color: #800080;">$sx</span> = (<span style="color: #800080;">$width</span> - imagefontwidth(5)*<span style="color: #008080;">strlen</span>(<span style="color: #800080;">$string</span>))/2<span style="color: #000000;">; </span><span style="color: #008080;"> 31</span> <span style="color: #800080;">$sy</span> = (<span style="color: #800080;">$height</span> - imagefontheight(5))/2<span style="color: #000000;">; </span><span style="color: #008080;"> 32</span> <span style="color: #800080;">$textcolor</span> = imagecolorallocate(<span style="color: #800080;">$image</span>, 255, 0, 0<span style="color: #000000;">); </span><span style="color: #008080;"> 33</span> imagestring(<span style="color: #800080;">$image</span>, 5, <span style="color: #800080;">$sx</span>, <span style="color: #800080;">$sy</span>, <span style="color: #800080;">$string</span>, <span style="color: #800080;">$textcolor</span><span style="color: #000000;">); </span><span style="color: #008080;"> 34</span> <span style="color: #0000ff;">return</span> <span style="color: #800080;">$image</span><span style="color: #000000;">; </span><span style="color: #008080;"> 35</span> <span style="color: #000000;"> } </span><span style="color: #008080;"> 36</span> imagego("img/1.jpg", "imageaddstring", <span style="color: #0000ff;">array</span>("Add a string on JPEG"<span style="color: #000000;">)); </span><span style="color: #008080;"> 37</span> imagego("img/2.gif", "imageaddstring", <span style="color: #0000ff;">array</span>("Add a string on GIF"<span style="color: #000000;">)); </span><span style="color: #008080;"> 38</span> imagego("img/3.png", "imageaddstring", <span style="color: #0000ff;">array</span>("Add a string on PNG"<span style="color: #000000;">)); </span><span style="color: #008080;"> 39</span> <span style="color: #008080;"> 40</span> <span style="color: #008000;">//</span><span style="color: #008000;">2. 图片缩放与裁剪处理</span> <span style="color: #008080;"> 41</span> <span style="color: #008000;">/*</span><span style="color: #008000;"> imagecopyresized </span><span style="color: #008080;"> 42</span> <span style="color: #008000;"> * imagecopyresampled($dst_img.$src_img,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h) </span><span style="color: #008080;"> 43</span> <span style="color: #008000;"> * 以上两个函数都可以进行图片缩放,后者效果好一些.该函数可以在图像内部复制,但当区域重复时后果不可知 </span><span style="color: #008080;"> 44</span> <span style="color: #008000;"> * 如果源和目标的高宽不一样,则会自动进行缩放. </span><span style="color: #008080;"> 45</span> <span style="color: #008000;"> * 同时,该函数也可以实现图像的裁剪. </span><span style="color: #008080;"> 46</span> <span style="color: #008000;">*/</span> <span style="color: #008080;"> 47</span> <span style="color: #008000;">//</span><span style="color: #008000;">该方法用于缩小图片1.5倍</span> <span style="color: #008080;"> 48</span> <span style="color: #0000ff;">function</span> imagethumb(<span style="color: #800080;">$image</span>, <span style="color: #800080;">$width</span>, <span style="color: #800080;">$height</span>, <span style="color: #800080;">$type</span>, <span style="color: #800080;">$vars</span><span style="color: #000000;">){ </span><span style="color: #008080;"> 49</span> <span style="color: #800080;">$p</span> = <span style="color: #800080;">$vars</span>{0<span style="color: #000000;">}; </span><span style="color: #008080;"> 50</span> <span style="color: #800080;">$n_image</span> = imagecreatetruecolor(<span style="color: #800080;">$width</span>/<span style="color: #800080;">$p</span>, <span style="color: #800080;">$height</span>/<span style="color: #800080;">$p</span><span style="color: #000000;">); </span><span style="color: #008080;"> 51</span> imagecopyresampled(<span style="color: #800080;">$n_image</span>, <span style="color: #800080;">$image</span>, 0, 0, 0, 0, <span style="color: #800080;">$width</span>/<span style="color: #800080;">$p</span>, <span style="color: #800080;">$height</span>/<span style="color: #800080;">$p</span>, <span style="color: #800080;">$width</span>, <span style="color: #800080;">$height</span><span style="color: #000000;">); </span><span style="color: #008080;"> 52</span> imagedestroy(<span style="color: #800080;">$image</span><span style="color: #000000;">); </span><span style="color: #008080;"> 53</span> <span style="color: #0000ff;">return</span> <span style="color: #800080;">$n_image</span><span style="color: #000000;">; </span><span style="color: #008080;"> 54</span> <span style="color: #000000;"> } </span><span style="color: #008080;"> 55</span> imagego("img/1.jpg", "imagethumb", <span style="color: #0000ff;">array</span>(1.5<span style="color: #000000;">)); </span><span style="color: #008080;"> 56</span> imagego("img/2.gif", "imagethumb", <span style="color: #0000ff;">array</span>(1.5<span style="color: #000000;">)); </span><span style="color: #008080;"> 57</span> imagego("img/3.png", "imagethumb", <span style="color: #0000ff;">array</span>(1.5<span style="color: #000000;">)); </span><span style="color: #008080;"> 58</span> <span style="color: #008000;">//</span><span style="color: #008000;">该方法用于实现图片的裁剪</span> <span style="color: #008080;"> 59</span> <span style="color: #0000ff;">function</span> imagecut(<span style="color: #800080;">$image</span>, <span style="color: #800080;">$width</span>, <span style="color: #800080;">$height</span>, <span style="color: #800080;">$type</span>, <span style="color: #800080;">$vars</span><span style="color: #000000;">) { </span><span style="color: #008080;"> 60</span> <span style="color: #800080;">$n_x</span> = <span style="color: #800080;">$vars</span>{0<span style="color: #000000;">}; </span><span style="color: #008080;"> 61</span> <span style="color: #800080;">$n_y</span> = <span style="color: #800080;">$vars</span>{1<span style="color: #000000;">}; </span><span style="color: #008080;"> 62</span> <span style="color: #800080;">$n_width</span> = <span style="color: #800080;">$vars</span>{2<span style="color: #000000;">}; </span><span style="color: #008080;"> 63</span> <span style="color: #800080;">$n_height</span> = <span style="color: #800080;">$vars</span>{3<span style="color: #000000;">}; </span><span style="color: #008080;"> 64</span> <span style="color: #008080;"> 65</span> <span style="color: #800080;">$n_image</span> = imagecreatetruecolor(<span style="color: #800080;">$n_width</span>, <span style="color: #800080;">$n_height</span><span style="color: #000000;">); </span><span style="color: #008080;"> 66</span> imagecopyresampled(<span style="color: #800080;">$n_image</span>, <span style="color: #800080;">$image</span>, 0, 0, <span style="color: #800080;">$n_x</span>, <span style="color: #800080;">$n_y</span>, <span style="color: #800080;">$n_width</span>, <span style="color: #800080;">$n_height</span>, <span style="color: #800080;">$n_width</span>, <span style="color: #800080;">$n_height</span><span style="color: #000000;">); </span><span style="color: #008080;"> 67</span> imagedestroy(<span style="color: #800080;">$image</span><span style="color: #000000;">); </span><span style="color: #008080;"> 68</span> <span style="color: #0000ff;">return</span> <span style="color: #800080;">$n_image</span><span style="color: #000000;">; </span><span style="color: #008080;"> 69</span> <span style="color: #000000;"> } </span><span style="color: #008080;"> 70</span> imagego("img/1.jpg", "imagecut", <span style="color: #0000ff;">array</span>(200, 100, 100, 100<span style="color: #000000;">)); </span><span style="color: #008080;"> 71</span> imagego("img/2.gif", "imagecut", <span style="color: #0000ff;">array</span>(200, 100, 100, 100<span style="color: #000000;">)); </span><span style="color: #008080;"> 72</span> imagego("img/3.png", "imagecut", <span style="color: #0000ff;">array</span>(200, 100, 100, 100<span style="color: #000000;">)); </span><span style="color: #008080;"> 73</span> <span style="color: #008080;"> 74</span> <span style="color: #008000;">//</span><span style="color: #008000;">3. 添加图片水印</span> <span style="color: #008080;"> 75</span> <span style="color: #008000;">/*</span><span style="color: #008000;"> imagecopy($dst_img,$src_img,$dst_x,$dst_y,$src_x,$src_y,$src_w,$src_h) </span><span style="color: #008080;"> 76</span> <span style="color: #008000;"> * 将一个图片复制到另一个图片上面 </span><span style="color: #008080;"> 77</span> <span style="color: #008000;">*/</span> <span style="color: #008080;"> 78</span> <span style="color: #0000ff;">function</span> watermark(<span style="color: #800080;">$image</span>, <span style="color: #800080;">$width</span>, <span style="color: #800080;">$height</span>, <span style="color: #800080;">$type</span>, <span style="color: #800080;">$vars</span><span style="color: #000000;">){ </span><span style="color: #008080;"> 79</span> <span style="color: #800080;">$w_image</span> = imagecreatefrompng("img/logo.png"<span style="color: #000000;">); </span><span style="color: #008080;"> 80</span> <span style="color: #0000ff;">list</span>(<span style="color: #800080;">$src_w</span>, <span style="color: #800080;">$src_h</span>) = <span style="color: #008080;">getimagesize</span>("img/logo.png"<span style="color: #000000;">); </span><span style="color: #008080;"> 81</span> imagecopy(<span style="color: #800080;">$image</span>, <span style="color: #800080;">$w_image</span>, <span style="color: #800080;">$vars</span>{0}, <span style="color: #800080;">$vars</span>{1}, 0, 0, <span style="color: #800080;">$src_w</span>, <span style="color: #800080;">$src_h</span><span style="color: #000000;">); </span><span style="color: #008080;"> 82</span> imagedestroy(<span style="color: #800080;">$w_image</span><span style="color: #000000;">); </span><span style="color: #008080;"> 83</span> <span style="color: #0000ff;">return</span> <span style="color: #800080;">$image</span><span style="color: #000000;">; </span><span style="color: #008080;"> 84</span> <span style="color: #000000;"> } </span><span style="color: #008080;"> 85</span> imagego("img/1.jpg", "watermark", <span style="color: #0000ff;">array</span>(50,50<span style="color: #000000;">)); </span><span style="color: #008080;"> 86</span> imagego("img/2.gif", "watermark", <span style="color: #0000ff;">array</span>(100,100<span style="color: #000000;">)); </span><span style="color: #008080;"> 87</span> imagego("img/3.png", "watermark", <span style="color: #0000ff;">array</span>(150,150<span style="color: #000000;">)); </span><span style="color: #008080;"> 88</span> <span style="color: #008080;"> 89</span> <span style="color: #008000;">//</span><span style="color: #008000;">4. 图片的选装和翻转</span> <span style="color: #008080;"> 90</span> <span style="color: #008000;">/*</span><span style="color: #008000;"> imagerotate($src,$degree,$bgcolor,[ignore transparent]) 可选参数是否忽视透明色,返回旋转后的图片 </span><span style="color: #008080;"> 91</span> <span style="color: #008000;"> * 翻转用imagecopy按像素行或者像素列复制就可以了 </span><span style="color: #008080;"> 92</span> <span style="color: #008000;"> * 下面的函数先旋转再翻转 </span><span style="color: #008080;"> 93</span> <span style="color: #008000;">*/</span> <span style="color: #008080;"> 94</span> <span style="color: #0000ff;">function</span> rotateandturn(<span style="color: #800080;">$image</span>, <span style="color: #800080;">$width</span>, <span style="color: #800080;">$height</span>, <span style="color: #800080;">$type</span>, <span style="color: #800080;">$vars</span><span style="color: #000000;">) { </span><span style="color: #008080;"> 95</span> <span style="color: #800080;">$angle</span> = <span style="color: #800080;">$vars</span>{0<span style="color: #000000;">}; </span><span style="color: #008080;"> 96</span> <span style="color: #800080;">$image</span> = imagerotate(<span style="color: #800080;">$image</span>, <span style="color: #800080;">$angle</span>, 0<span style="color: #000000;">); </span><span style="color: #008080;"> 97</span> <span style="color: #008000;">//</span><span style="color: #008000;">选装后图片大小可能发生变化</span> <span style="color: #008080;"> 98</span> <span style="color: #800080;">$width</span> = imagesx(<span style="color: #800080;">$image</span><span style="color: #000000;">); </span><span style="color: #008080;"> 99</span> <span style="color: #800080;">$height</span> = imagesy(<span style="color: #800080;">$image</span><span style="color: #000000;">); </span><span style="color: #008080;">100</span> <span style="color: #800080;">$n_image</span> = imagecreatetruecolor(<span style="color: #800080;">$width</span>, <span style="color: #800080;">$height</span><span style="color: #000000;">); </span><span style="color: #008080;">101</span> <span style="color: #008000;">//</span><span style="color: #008000;">1代表x轴翻转,2代表y轴翻转,0代表不翻转</span> <span style="color: #008080;">102</span> <span style="color: #0000ff;">if</span> (<span style="color: #800080;">$vars</span>{1} == 1<span style="color: #000000;">) { </span><span style="color: #008080;">103</span> <span style="color: #0000ff;">for</span> (<span style="color: #800080;">$x</span> = 0; <span style="color: #800080;">$x</span> $width; <span style="color: #800080;">$x</span>++<span style="color: #000000;">) { </span><span style="color: #008080;">104</span> imagecopy(<span style="color: #800080;">$n_image</span>, <span style="color: #800080;">$image</span>, <span style="color: #800080;">$x</span>, 0, <span style="color: #800080;">$width</span>-<span style="color: #800080;">$x</span>-1, 0, 1, <span style="color: #800080;">$height</span><span style="color: #000000;">); </span><span style="color: #008080;">105</span> <span style="color: #000000;"> } </span><span style="color: #008080;">106</span> } <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> (<span style="color: #800080;">$vars</span>{1} == 2<span style="color: #000000;">){ </span><span style="color: #008080;">107</span> <span style="color: #0000ff;">for</span> (<span style="color: #800080;">$x</span> = 0; <span style="color: #800080;">$x</span> $height; <span style="color: #800080;">$x</span>++<span style="color: #000000;">) { </span><span style="color: #008080;">108</span> imagecopy(<span style="color: #800080;">$n_image</span>, <span style="color: #800080;">$image</span>, 0, <span style="color: #800080;">$x</span>, 0, <span style="color: #800080;">$height</span>-<span style="color: #800080;">$x</span>-1, <span style="color: #800080;">$width</span>, 1<span style="color: #000000;">); </span><span style="color: #008080;">109</span> <span style="color: #000000;"> } </span><span style="color: #008080;">110</span> } <span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #008080;">111</span> imagecopy(<span style="color: #800080;">$n_image</span>, <span style="color: #800080;">$image</span>, 0, 0, 0, 0, <span style="color: #800080;">$width</span>, <span style="color: #800080;">$height</span><span style="color: #000000;">); </span><span style="color: #008080;">112</span> <span style="color: #000000;"> } </span><span style="color: #008080;">113</span> <span style="color: #008080;">114</span> imagedestroy(<span style="color: #800080;">$image</span><span style="color: #000000;">); </span><span style="color: #008080;">115</span> <span style="color: #0000ff;">return</span> <span style="color: #800080;">$n_image</span><span style="color: #000000;">; </span><span style="color: #008080;">116</span> <span style="color: #000000;"> } </span><span style="color: #008080;">117</span> imagego("img/1.jpg", "rotateandturn", <span style="color: #0000ff;">array</span>(10, 0<span style="color: #000000;">)); </span><span style="color: #008080;">118</span> imagego("img/2.gif", "rotateandturn", <span style="color: #0000ff;">array</span>(0,1<span style="color: #000000;">)); </span><span style="color: #008080;">119</span> imagego("img/3.png", "rotateandturn", <span style="color: #0000ff;">array</span>(10,2<span style="color: #000000;">)); </span><span style="color: #008080;">120</span> ?> <span style="color: #008080;">121</span> <span style="color: #008080;">122</span> <span style="color: #008080;">123</span> 原图<br> <span style="color: #008080;">124</span> <img alt="" src="img/1.jpg"><img alt="" src="img/2.gif"><img alt="" src="img/3.png"> <span style="color: #008080;">125</span> <br>图中添加字符串<br> <span style="color: #008080;">126</span> <img alt="" src="img/1_imageaddstring.jpg"><img alt="" src="img/2_imageaddstring.gif"><img alt="" src="img/3_imageaddstring.png"> <span style="color: #008080;">127</span> <br>图片缩放<br> <span style="color: #008080;">128</span> <img alt="" src="img/1_imagethumb.jpg"><img alt="" src="img/2_imagethumb.gif"><img alt="" src="img/3_imagethumb.png"> <span style="color: #008080;">129</span> <br>图片裁剪<br> <span style="color: #008080;">130</span> <img alt="" src="img/1_imagecut.jpg"><img alt="" src="img/2_imagecut.gif"><img alt="" src="img/3_imagecut.png"> <span style="color: #008080;">131</span> <br>图片水印<br> <span style="color: #008080;">132</span> <img alt="" src="img/1_watermark.jpg"><img alt="" src="img/2_watermark.gif"><img alt="" src="img/3_watermark.png"> <span style="color: #008080;">133</span> <br>图片旋转和翻转<br> <span style="color: #008080;">134</span> <img alt="" src="img/1_rotateandturn.jpg"><img alt="" src="img/2_rotateandturn.gif"><img alt="" src="img/3_rotateandturn.png"> <span style="color: #008080;">135</span> <span style="color: #008080;">136</span> <span style="color: #008080;">137</span>
执行结果