首页 > 开发 > PHP > 正文

常用的php图片处理类(水印、等比缩放、固定高宽)分享

2024-05-04 23:36:34
字体:
来源:转载
供稿:网友

这篇文章主要汇总介绍了两个常用的php图片处理类(水印、等比缩放、固定高宽),非常的简单实用,有需要的小伙伴可以参考下

常用的php图片处理类(水印、等比缩放、固定高宽)分享

  1. <?php  
  2. //PHP 添加水印 & 比例缩略图 & 固定高度 & 固定宽度 类。  
  3. class Image_process{  
  4. public $source; //原图  
  5. public $source_width; //原图宽度  
  6. public $source_height; //原图高度  
  7. public $source_type_id;  
  8. public $orign_name;  
  9. public $orign_dirname;  
  10.  
  11. //传入原图路径  
  12. public function __construct($source){  
  13. $this->typeList = array(1=>'gif',2=>'jpg',3=>'png');  
  14. $ginfo = getimagesize($source);  
  15. $this->source_width = $ginfo[0];  
  16. $this->source_height = $ginfo[1];  
  17. $this->source_type_id = $ginfo[2];  
  18. $this->orign_url = $source;  
  19. $this->orign_name = basename($source);  
  20. $this->orign_dirname = dirname($source);  
  21. }  
  22.  
  23. //判断图片的文件的格式,返回PHP可识别的编码  
  24. public function judgeType($type,$source){  
  25. if($type == 1){  
  26. return imagecreatefromgif($source); //gif  
  27. }else if($type == 2){  
  28. return imagecreatefromjpeg($source); //jpg  
  29. }else if($type == 3){  
  30. return imagecreatefrompng($source); //png  
  31. }else{  
  32. return false;  
  33. }  
  34. }  
  35.  
  36. //生成水印图片  
  37. public function waterMakeImage($logo){  
  38. $linfo = getimagesize($logo);  
  39. $logo_width = $linfo[0];  
  40. $logo_height = $linfo[1];  
  41. $logo_type_id = $linfo[2];  
  42. $sourceHandle = $this->judgeType($this->source_type_id,$this->orign_url);  
  43. $logoHandle = $this->judgeType($logo_type_id,$logo);  
  44. if(!$sourceHandle || !$logoHandle){  
  45. return false;  
  46. }  
  47. $x = ($this->source_width - $logo_width)/2;  
  48. $y = ($this->source_height - $logo_height)/2;  
  49. imagecopy($sourceHandle,$logoHandle,$x,$y,0,0,$logo_width,$logo_height);  
  50. $newPic = $this->orign_dirname.'/water_'.time().'.'.$this->typeList[$this->source_type_id];  
  51. if($this->saveImage($sourceHandle,$newPic)){  
  52. imagedestroy($sourceHandle);  
  53. imagedestroy($logoHandle);  
  54. }  
  55. }  
  56.  
  57. //固定高度宽度  
  58. public function fixSizeImage($width,$height){  
  59. if($width > $this->source_width) $this->source_width;  
  60. if($height > $this->source_height) $this->source_height;  
  61. if($width === false){  
  62. $width = floor($this->source_width / ($this->source_height / $height));  
  63. }  
  64. if($height === false){  
  65. $height = floor($this->source_height / ($this->source_width / $width));  
  66. }  
  67. $this->tinyImage($width,$height);  
  68. }  
  69.  
  70. //等比例缩放图片  
  71. public function scaleImage($scale){  
  72. $width = floor($this->source_width * $scale);  
  73. $height = floor($this->source_height * $scale);  
  74. $this->tinyImage($width, $height);  
  75. }  
  76.  
  77. //创建缩略图  
  78. public function tinyImage($width,$height){  
  79. $tinyImage = imagecreatetruecolor($width,$height);  
  80. $handle = $this->judgeType($this->source_type_id,$this->orign_url);  
  81. if(function_exists('imagecopyresampled')){  
  82. imagecopyresampled($tinyImage, $handle, 0, 0, 0, 0, $width, $height, $this->source_width, $this->source_height);  
  83. }else{  
  84. imagecopyresized($tinyImage, $handle, 0, 0, 0, 0, $width, $height, $this->source_width, $this->source_height);  
  85. }  
  86. $newPic = $this->orign_dirname.'/thumb_'.time().'_'.$width."_".$height.".".$this->typeList[$this->source_type_id];  
  87. if($this->saveImage($tinyImage,$newPic)){  
  88. imagedestroy($tinyImage);  
  89. imagedestroy($handle);  
  90. }  
  91. }  
  92. //保存图片  
  93. private function saveImage($image,$url){  
  94. if(imagejpeg($image,$url)){  
  95. return true;  
  96. }  
  97. }  
  98. }  
  99. $imgHandle = new Image_process('D:/AppServ/www/test/getimg/14061907445601.jpg');  
  100. //$imgHandle->waterMakeImage('D:/AppServ/www/test/getimg/shougongke.png'); //生成水印图片  
  101. //$imgHandle->fixSizeImage(200,150); //固定长度图片  
  102. $imgHandle->scaleImage(0.2); //等比例缩放  
  103. ?> 
  104.  
  105.  
  106. 示例二: 
  107.  
  108.  
  109. 10 
  110. 11 
  111. 12 
  112. 13 
  113. 14 
  114. 15 
  115. 16 
  116. 17 
  117. 18 
  118. 19 
  119. 20 
  120. 21 
  121. 22 
  122. 23 
  123. 24 
  124. 25 
  125. 26 
  126. 27 
  127. 28 
  128. 29 
  129. 30 
  130. 31 
  131. 32 
  132. 33 
  133. 34 
  134. 35 
  135. 36 
  136. 37 
  137. 38 
  138. 39 
  139. 40 
  140. 41 
  141. 42 
  142. 43 
  143. 44 
  144. 45 
  145. 46 
  146. 47 
  147. 48 
  148. 49 
  149. 50 
  150. 51 
  151. 52 
  152. 53 
  153. 54 
  154. 55 
  155. 56 
  156. 57 
  157. 58 
  158. 59 
  159. 60 
  160. 61 
  161. 62 
  162. 63 
  163. 64 
  164. 65 
  165. 66 
  166. 67 
  167. 68 
  168. 69 
  169. 70 
  170. 71 
  171. 72 
  172. 73 
  173. 74 
  174. 75 
  175. 76 
  176. 77 
  177. 78 
  178. 79 
  179. 80 
  180. 81 
  181. 82 
  182. 83 
  183. 84 
  184. 85 
  185. 86 
  186. 87 
  187. 88 
  188. 89 
  189. 90 
  190. 91 
  191. 92 
  192. 93 
  193. 94 
  194. 95 
  195. 96 
  196. 97 
  197. 98 
  198. 99 
  199. 100 
  200. 101 
  201. 102 
  202. 103 
  203. 104 
  204. 105 
  205. 106 
  206. 107 
  207. 108 
  208. 109 
  209. 110 
  210. 111 
  211. 112 
  212. 113 
  213. 114 
  214. 115 
  215. 116 
  216. 117 
  217. 118 
  218. 119 
  219. 120 
  220. 121 
  221. 122 
  222. 123 
  223. 124 
  224. 125 
  225. 126 
  226. 127 
  227. 128 
  228. 129 
  229. 130 
  230. 131 
  231. 132 
  232. 133 
  233. 134 
  234. 135 
  235. 136 
  236. 137 
  237. 138 
  238. 139 
  239. 140 
  240. 141 
  241. 142 
  242. 143 
  243. 144 
  244. 145 
  245. 146 
  246. 147 
  247. 148 
  248. 149 
  249. 150 
  250. 151 
  251. 152 
  252. 153 
  253. 154 
  254. 155 
  255. 156 
  256. 157 
  257. 158 
  258. 159 
  259. 160 
  260. 161 
  261. 162 
  262. 163 
  263. 164 
  264. 165 
  265. 166 
  266. 167 
  267. 168 
  268. 169 
  269. 170 
  270. 171 
  271. 172 
  272. 173 
  273. 174 
  274. 175 
  275. 176 
  276. 177 
  277. 178 
  278. 179 
  279. 180 
  280. 181 
  281. 182 
  282. 183 
  283. 184 
  284. 185 
  285. 186 
  286. 187 
  287. 188 
  288. 189 
  289. 190 
  290. 191 
  291. 192 
  292. 193 
  293. 194 
  294. 195 
  295. 196 
  296. 197 
  297. 198 
  298. 199 
  299. 200 
  300. 201 
  301. 202 
  302. 203 
  303. 204 
  304. 205 
  305. 206 
  306. 207 
  307. 208 
  308. 209 
  309. 210 
  310. 211 
  311. 212 
  312. 213 
  313. 214 
  314. 215 
  315. 216 
  316. 217 
  317. 218 
  318. 219 
  319. 220 
  320. 221 
  321. 222 
  322. 223 
  323. 224 
  324. 225 
  325. 226 
  326. 227 
  327. 228 
  328. 229 
  329. 230 
  330. 231 
  331. 232 
  332. 233 
  333. 234 
  334. 235 
  335. 236 
  336. 237 
  337. 238 
  338. 239 
  339. 240 
  340. 241 
  341. 242 
  342. 243 
  343. 244 
  344. 245 
  345. 246 
  346. 247 
  347. 248 
  348. 249 
  349. 250 
  350. 251 
  351. 252 
  352. 253 
  353. 254 
  354. 255 
  355. 256 
  356. 257 
  357. 258 
  358. 259 
  359. 260 
  360. 261 
  361. 262 
  362. 263 
  363. 264 
  364. 265 
  365. 266 
  366. 267 
  367. 268 
  368. 269 
  369. 270 
  370. 271 
  371. 272 
  372. 273 
  373. 274 
  374. 275 
  375. 276 
  376. 277 
  377. 278 
  378. 279 
  379. 280 
  380. 281 
  381. 282 
  382. 283 
  383. 284 
  384. 285 
  385. 286 
  386. 287 
  387. 288 
  388. 289 
  389. 290 
  390. 291 
  391. 292 
  392. 293 
  393. 294 
  394. 295 
  395. 296 
  396. 297 
  397. 298 
  398. 299 
  399. 300 
  400. 301 
  401. 302 
  402. 303 
  403. 304 
  404. 305 
  405. 306 
  406. 307 
  407. 308 
  408. 309 
  409. 310 
  410. 311 
  411. 312 
  412. 313 
  413. 314 
  414. 315 
  415. 316 
  416. 317 
  417. 318 
  418. 319 
  419. 320 
  420. 321 
  421. 322 
  422. 323 
  423. 324 
  424. 325 
  425. 326 
  426. 327 
  427. 328 
  428. 329 
  429. 330 
  430. 331 
  431. 332 
  432. 333 
  433. 334 
  434. 335 
  435. 336 
  436. 337 
  437. 338 
  438. 339 
  439. 340 
  440. 341 
  441. 342 
  442. 343 
  443. 344 
  444. 345 
  445. 346 
  446. 347 
  447. 348 
  448. 349 
  449. 350 
  450. 351 
  451. 352 
  452. 353 
  453. 354 
  454. 355 
  455. 356 
  456. 357 
  457. 358 
  458. 359 
  459. 360 
  460. 361 
  461. 362 
  462. 363 
  463. 364 
  464. 365 
  465. 366 
  466. 367 
  467. 368 
  468. 369 
  469. 370 
  470. 371 
  471. 372 
  472. 373 
  473. 374 
  474. 375 
  475. 376 
  476. 377 
  477.  
  478. <?php 
  479. /** 
  480.  
  481. * 图像处理类 
  482. * @author FC_LAMP 
  483. * @internal功能包含:水印,缩略图 
  484. */ 
  485. class Img 
  486. //图片格式 
  487. private $exts = array ('jpg''jpeg''gif''bmp''png' ); 
  488.  
  489. /** 
  490.  
  491.  
  492. * @throws Exception 
  493. */ 
  494. public function __construct() 
  495. if (! function_exists ( 'gd_info' )) 
  496. throw new Exception ( '加载GD库失败!' ); 
  497.  
  498. /** 
  499.  
  500. * 裁剪压缩 
  501. * @param $src_img 图片 
  502. * @param $save_img 生成后的图片 
  503. * @param $option 参数选项,包括: $maxwidth 宽 $maxheight 高 
  504. * array('width'=>xx,'height'=>xxx) 
  505. * @internal 
  506. * 我们一般的压缩图片方法,在图片过长或过宽时生成的图片 
  507. * 都会被“压扁”,针对这个应采用先裁剪后按比例压缩的方法 
  508. */ 
  509. public function thumb_img($src_img, $save_img = '', $option) 
  510.  
  511. if (empty ( $option ['width'] ) or empty ( $option ['height'] )) 
  512. return array ('flag' => False, 'msg' => '原图长度与宽度不能小于0' ); 
  513. $org_ext = $this->is_img ( $src_img ); 
  514. if (! $org_ext ['flag']) 
  515. return $org_ext; 
  516.  
  517. //如果有保存路径,则确定路径是否正确 
  518. if (! empty ( $save_img )) 
  519. $f = $this->check_dir ( $save_img ); 
  520. if (! $f ['flag']) 
  521. return $f; 
  522.  
  523. //获取出相应的方法 
  524. $org_funcs = $this->get_img_funcs ( $org_ext ['msg'] ); 
  525.  
  526. //获取原大小 
  527. $source = $org_funcs ['create_func'] ( $src_img ); 
  528. $src_w = imagesx ( $source ); 
  529. $src_h = imagesy ( $source ); 
  530.  
  531. //调整原始图像(保持图片原形状裁剪图像) 
  532. $dst_scale = $option ['height'] / $option ['width']; //目标图像长宽比 
  533. $src_scale = $src_h / $src_w; // 原图长宽比 
  534. if ($src_scale >= $dst_scale) 
  535. // 过高 
  536. $w = intval ( $src_w ); 
  537. $h = intval ( $dst_scale * $w ); 
  538.  
  539. $x = 0; 
  540. $y = ($src_h - $h) / 3; 
  541. else 
  542. // 过宽 
  543. $h = intval ( $src_h ); 
  544. $w = intval ( $h / $dst_scale ); 
  545.  
  546. $x = ($src_w - $w) / 2; 
  547. $y = 0; 
  548. // 剪裁 
  549. $croped = imagecreatetruecolor ( $w, $h ); 
  550. imagecopy ( $croped, $source, 0, 0, $x, $y, $src_w, $src_h ); 
  551. // 缩放 
  552. $scale = $option ['width'] / $w; 
  553. $target = imagecreatetruecolor ( $option ['width'], $option ['height'] ); 
  554. $final_w = intval ( $w * $scale ); 
  555. $final_h = intval ( $h * $scale ); 
  556. imagecopyresampled ( $target, $croped, 0, 0, 0, 0, $final_w, $final_h, $w, $h ); 
  557. imagedestroy ( $croped ); 
  558.  
  559. //输出(保存)图片 
  560. if (! empty ( $save_img )) 
  561.  
  562. $org_funcs ['save_func'] ( $target, $save_img ); 
  563. else 
  564. header ( $org_funcs ['header'] ); 
  565. $org_funcs ['save_func'] ( $target ); 
  566. imagedestroy ( $target ); 
  567. return array ('flag' => True, 'msg' => '' ); 
  568.  
  569. /** 
  570.  
  571. * 等比例缩放图像 
  572. * @param $src_img 原图片 
  573. * @param $save_img 需要保存的地方 
  574. * @param $option 参数设置 array('width'=>xx,'height'=>xxx) 
  575.  
  576. */ 
  577. function resize_image($src_img, $save_img = '', $option) 
  578. $org_ext = $this->is_img ( $src_img ); 
  579. if (! $org_ext ['flag']) 
  580. return $org_ext; 
  581.  
  582. //如果有保存路径,则确定路径是否正确 
  583. if (! empty ( $save_img )) 
  584. $f = $this->check_dir ( $save_img ); 
  585. if (! $f ['flag']) 
  586. return $f; 
  587.  
  588. //获取出相应的方法 
  589. $org_funcs = $this->get_img_funcs ( $org_ext ['msg'] ); 
  590.  
  591. //获取原大小 
  592. $source = $org_funcs ['create_func'] ( $src_img ); 
  593. $src_w = imagesx ( $source ); 
  594. $src_h = imagesy ( $source ); 
  595.  
  596. if (($option ['width'] && $src_w > $option ['width']) || ($option ['height'] && $src_h > $option ['height'])) 
  597. if ($option ['width'] && $src_w > $option ['width']) 
  598. $widthratio = $option ['width'] / $src_w; 
  599. $resizewidth_tag = true
  600.  
  601. if ($option ['height'] && $src_h > $option ['height']) 
  602. $heightratio = $option ['height'] / $src_h; 
  603. $resizeheight_tag = true
  604.  
  605. if ($resizewidth_tag && $resizeheight_tag) 
  606. if ($widthratio < $heightratio) 
  607. $ratio = $widthratio; 
  608. else 
  609. $ratio = $heightratio; 
  610.  
  611. if ($resizewidth_tag && ! $resizeheight_tag) 
  612. $ratio = $widthratio; 
  613. if ($resizeheight_tag && ! $resizewidth_tag) 
  614. $ratio = $heightratio; 
  615.  
  616. $newwidth = $src_w * $ratio; 
  617. $newheight = $src_h * $ratio; 
  618.  
  619. if (function_exists ( "imagecopyresampled" )) 
  620. $newim = imagecreatetruecolor ( $newwidth, $newheight ); 
  621. imagecopyresampled ( $newim, $source, 0, 0, 0, 0, $newwidth, $newheight, $src_w, $src_h ); 
  622. else 
  623. $newim = imagecreate ( $newwidth, $newheight ); 
  624. imagecopyresized ( $newim, $source, 0, 0, 0, 0, $newwidth, $newheight, $src_w, $src_h ); 
  625. //输出(保存)图片 
  626. if (! empty ( $save_img )) 
  627.  
  628. $org_funcs ['save_func'] ( $newim, $save_img ); 
  629. else 
  630. header ( $org_funcs ['header'] ); 
  631. $org_funcs ['save_func'] ( $newim ); 
  632. imagedestroy ( $newim ); 
  633. return array ('flag' => True, 'msg' => '' ); 
  634.  
  635. /** 
  636.  
  637. * 生成水印图片 
  638. * @param $org_img 原图像 
  639. * @param $mark_img 水印标记图像 
  640. * @param $save_img 当其目录不存在时,会试着创建目录 
  641. * @param array $option 为水印的一些基本设置包含: 
  642. * x:水印的水平位置,默认为减去水印图宽度后的值 
  643. * y:水印的垂直位置,默认为减去水印图高度后的值 
  644. * alpha:alpha值(控制透明度),默认为50 
  645. */ 
  646. public function water_mark($org_img, $mark_img, $save_img = '', $option = array()) 
  647. //检查图片 
  648. $org_ext = $this->is_img ( $org_img ); 
  649. if (! $org_ext ['flag']) 
  650. return $org_ext; 
  651. $mark_ext = $this->is_img ( $mark_img ); 
  652. if (! $mark_ext ['flag']) 
  653. return $mark_ext; 
  654. //如果有保存路径,则确定路径是否正确 
  655. if (! empty ( $save_img )) 
  656. $f = $this->check_dir ( $save_img ); 
  657. if (! $f ['flag']) 
  658. return $f; 
  659.  
  660. //获取相应画布 
  661. $org_funcs = $this->get_img_funcs ( $org_ext ['msg'] ); 
  662. $org_img_im = $org_funcs ['create_func'] ( $org_img ); 
  663.  
  664. $mark_funcs = $this->get_img_funcs ( $mark_ext ['msg'] ); 
  665. $mark_img_im = $mark_funcs ['create_func'] ( $mark_img ); 
  666.  
  667. //拷贝水印图片坐标 
  668. $mark_img_im_x = 0; 
  669. $mark_img_im_y = 0; 
  670. //拷贝水印图片高宽 
  671. $mark_img_w = imagesx ( $mark_img_im ); 
  672. $mark_img_h = imagesy ( $mark_img_im ); 
  673.  
  674. $org_img_w = imagesx ( $org_img_im ); 
  675. $org_img_h = imagesx ( $org_img_im ); 
  676.  
  677. //合成生成点坐标 
  678. $x = $org_img_w - $mark_img_w; 
  679. $org_img_im_x = isset ( $option ['x'] ) ? $option ['x'] : $x; 
  680. $org_img_im_x = ($org_img_im_x > $org_img_w or $org_img_im_x < 0) ? $x : $org_img_im_x; 
  681. $y = $org_img_h - $mark_img_h; 
  682. $org_img_im_y = isset ( $option ['y'] ) ? $option ['y'] : $y; 
  683. $org_img_im_y = ($org_img_im_y > $org_img_h or $org_img_im_y < 0) ? $y : $org_img_im_y; 
  684.  
  685. //alpha 
  686. $alpha = isset ( $option ['alpha'] ) ? $option ['alpha'] : 50; 
  687. $alpha = ($alpha > 100 or $alpha < 0) ? 50 : $alpha; 
  688.  
  689. //合并图片 
  690. imagecopymerge ( $org_img_im, $mark_img_im, $org_img_im_x, $org_img_im_y, $mark_img_im_x, $mark_img_im_y, $mark_img_w, $mark_img_h, $alpha ); 
  691.  
  692. //输出(保存)图片 
  693. if (! empty ( $save_img )) 
  694.  
  695. $org_funcs ['save_func'] ( $org_img_im, $save_img ); 
  696. else 
  697. header ( $org_funcs ['header'] ); 
  698. $org_funcs ['save_func'] ( $org_img_im ); 
  699. //销毁画布 
  700. imagedestroy ( $org_img_im ); 
  701. imagedestroy ( $mark_img_im ); 
  702. return array ('flag' => True, 'msg' => '' ); 
  703.  
  704.  
  705. /** 
  706.  
  707. * 检查图片 
  708. * @param unknown_type $img_path 
  709. * @return array('flag'=>true/false,'msg'=>ext/错误信息)  
  710. */ 
  711. private function is_img($img_path) 
  712. if (! file_exists ( $img_path )) 
  713. return array ('flag' => False, 'msg' => "加载图片 $img_path 失败!" ); 
  714. $ext = explode ( '.', $img_path ); 
  715. $ext = strtolower ( end ( $ext ) ); 
  716. if (! in_array ( $ext, $this->exts )) 
  717. return array ('flag' => False, 'msg' => "图片 $img_path 格式不正确!" ); 
  718. return array ('flag' => True, 'msg' => $ext ); 
  719.  
  720. /** 
  721.  
  722. * 返回正确的图片函数 
  723. * @param unknown_type $ext 
  724. */ 
  725. private function get_img_funcs($ext) 
  726. //选择 
  727. switch ($ext) 
  728. case 'jpg' : 
  729. $header = 'Content-Type:image/jpeg'
  730. $createfunc = 'imagecreatefromjpeg'
  731. $savefunc = 'imagejpeg'
  732. break
  733. case 'jpeg' : 
  734. $header = 'Content-Type:image/jpeg'
  735. $createfunc = 'imagecreatefromjpeg'
  736. $savefunc = 'imagejpeg'
  737. break
  738. case 'gif' : 
  739. $header = 'Content-Type:image/gif'
  740. $createfunc = 'imagecreatefromgif'
  741. $savefunc = 'imagegif'
  742. break
  743. case 'bmp' : 
  744. $header = 'Content-Type:image/bmp'
  745. $createfunc = 'imagecreatefrombmp'
  746. $savefunc = 'imagebmp'
  747. break
  748. default : 
  749. $header = 'Content-Type:image/png'
  750. $createfunc = 'imagecreatefrompng'
  751. $savefunc = 'imagepng'
  752. return array ('save_func' => $savefunc, 'create_func' => $createfunc, 'header' => $header ); 
  753.  
  754. /** 
  755.  
  756. * 检查并试着创建目录 
  757. * @param $save_img 
  758. */ 
  759. private function check_dir($save_img) 
  760. $dir = dirname ( $save_img ); 
  761. if (! is_dir ( $dir )) 
  762. if (! mkdir ( $dir, 0777, true )) 
  763. return array ('flag' => False, 'msg' => "图片保存目录 $dir 无法创建!" ); 
  764. return array ('flag' => True, 'msg' => '' ); 
  765.  
  766. if (! empty ( $_FILES ['test'] ['tmp_name'] )) 
  767. //例子 
  768. $img = new Img (); 
  769. //原图 
  770. $name = explode ( '.', $_FILES ['test'] ['name'] ); 
  771. $org_img = 'D:/test.' . end ( $name ); 
  772. move_uploaded_file ( $_FILES ['test'] ['tmp_name'], $org_img ); 
  773. $option = array ('width' => $_POST ['width'], 'height' => $_POST ['height'] ); 
  774. if ($_POST ['type'] == 1) 
  775. $s = $img->resize_image ( $org_img, '', $option ); 
  776. else 
  777. $img->thumb_img ( $org_img, '', $option ); 
  778. unlink ( $org_img ); 

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表