查看: 1555|回复: 0

[PHP学习] php生成图片缩略图功能示例

发表于 2017-12-13 08:00:02

本文实例讲述了php生成图片缩略图功能。分享给大家供大家参考,具体如下:

完整代码如下(为方便阅读,代码使用http://tools.jb51.net/code/phpformat进行了格式化处理):

  1. <?php
  2. /*
  3. * Created on 2011-3-18
  4. *
  5. * To change the template for this generated file go to
  6. * Window - Preferences - PHPeclipse - PHP - Code Templates
  7. */
  8. /*构造函数-生成缩略图+水印,参数说明:
  9. $srcFile-图片文件名,
  10. $dstFile-另存文件名,
  11. $markwords-水印文字,
  12. $markimage-水印图片,
  13. $dstW-图片保存宽度,
  14. $dstH-图片保存高度,
  15. $rate-图片保存品质*/
  16. makethumb("1.jpg", "aa/b.jpg", "50", "50");
  17. function makethumb($srcFile, $dstFile, $dstW, $dstH, $rate = 100, $markwords = null, $markimage = null) {
  18. $data = GetImageSize($srcFile);
  19. switch ($data[2]) {
  20. case 1:
  21. $im = @ImageCreateFromGIF($srcFile);
  22. break;
  23. case 2:
  24. $im = @ImageCreateFromJPEG($srcFile);
  25. break;
  26. case 3:
  27. $im = @ImageCreateFromPNG($srcFile);
  28. break;
  29. }
  30. if (!$im) return False;
  31. $srcW = ImageSX($im);
  32. $srcH = ImageSY($im);
  33. $dstX = 0;
  34. $dstY = 0;
  35. if ($srcW * $dstH > $srcH * $dstW) {
  36. $fdstH = round($srcH * $dstW / $srcW);
  37. $dstY = floor(($dstH - $fdstH) / 2);
  38. $fdstW = $dstW;
  39. } else {
  40. $fdstW = round($srcW * $dstH / $srcH);
  41. $dstX = floor(($dstW - $fdstW) / 2);
  42. $fdstH = $dstH;
  43. }
  44. $ni = ImageCreateTrueColor($dstW, $dstH);
  45. $dstX = ($dstX < 0) ? 0 : $dstX;
  46. $dstY = ($dstX < 0) ? 0 : $dstY;
  47. $dstX = ($dstX > ($dstW / 2)) ? floor($dstW / 2) : $dstX;
  48. $dstY = ($dstY > ($dstH / 2)) ? floor($dstH / s) : $dstY;
  49. $white = ImageColorAllocate($ni, 255, 255, 255);
  50. $black = ImageColorAllocate($ni, 0, 0, 0);
  51. imagefilledrectangle($ni, 0, 0, $dstW, $dstH, $white); // 填充背景色
  52. ImageCopyResized($ni, $im, $dstX, $dstY, 0, 0, $fdstW, $fdstH, $srcW, $srcH);
  53. if ($markwords != null) {
  54. $markwords = iconv("gb2312", "UTF-8", $markwords);
  55. //转换文字编码
  56. ImageTTFText($ni, 20, 30, 450, 560, $black, "simhei.ttf", $markwords); //写入文字水印
  57. //参数依次为,文字大小|偏转度|横坐标|纵坐标|文字颜色|文字类型|文字内容
  58. } elseif ($markimage != null) {
  59. $wimage_data = GetImageSize($markimage);
  60. switch ($wimage_data[2]) {
  61. case 1:
  62. $wimage = @ImageCreateFromGIF($markimage);
  63. break;
  64. case 2:
  65. $wimage = @ImageCreateFromJPEG($markimage);
  66. break;
  67. case 3:
  68. $wimage = @ImageCreateFromPNG($markimage);
  69. break;
  70. }
  71. imagecopy($ni, $wimage, 500, 560, 0, 0, 88, 31); //写入图片水印,水印图片大小默认为88*31
  72. imagedestroy($wimage);
  73. }
  74. ImageJpeg($ni, $dstFile, $rate);
  75. ImageJpeg($ni, $srcFile, $rate);
  76. imagedestroy($im);
  77. imagedestroy($ni);
  78. }
  79. ?>
复制代码

PS:这里再为大家推荐几款比较实用的图片处理工具供大家参考使用:

在线图片转换BASE64工具:
http://tools.jb51.net/transcoding/img2base64

ICO图标在线生成工具:
http://tools.jb51.net/aideddesign/ico_img

在线Email邮箱图标制作工具:
http://tools.jb51.net/email/emaillogo

在线图片格式转换(jpg/bmp/gif/png)工具:
http://tools.jb51.net/aideddesign/picext

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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



回复

使用道具 举报