Heim > Backend-Entwicklung > PHP-Tutorial > PHP图片描边字与马赛克(示例)

PHP图片描边字与马赛克(示例)

WBOY
Freigeben: 2016-07-25 08:55:14
Original
1195 Leute haben es durchsucht
  1. /**
  2. * GD image text outer
  3. *
  4. * @copyright UGiA.CN
  5. * [url=home.php?mod=space&uid=17823]@LINK[/url] www.ugia.cn/?p=88
  6. * @edit bbs.it-home.org
  7. */
  8. function imagetextouter(&$im, $size, $x, $y, $color, $fontfile, $text, $outer)
  9. {
  10. if (!function_exists('ImageColorAllocateHEX'))
  11. {
  12. function ImageColorAllocateHEX($im, $s)
  13. {
  14. if($s{0} == "#") $s = substr($s,1);
  15. $bg_dec = hexdec($s);
  16. return imagecolorallocate($im,
  17. ($bg_dec & 0xFF0000) >> 16,
  18. ($bg_dec & 0x00FF00) >> 8,
  19. ($bg_dec & 0x0000FF)
  20. );
  21. }
  22. }
  23. $ttf = false;
  24. if (is_file($fontfile))
  25. {
  26. $ttf = true;
  27. $area = imagettfbbox($size, $angle, $fontfile, $text);
  28. $width = $area[2] - $area[0] + 2;
  29. $height = $area[1] - $area[5] + 2;
  30. }
  31. else
  32. {
  33. $width = strlen($text) * 10;
  34. $height = 16;
  35. }
  36. $im_tmp = imagecreate($width, $height);
  37. $white = imagecolorallocate($im_tmp, 255, 255, 255);
  38. $black = imagecolorallocate($im_tmp, 0, 0, 0);
  39. $color = ImageColorAllocateHEX($im, $color);
  40. $outer = ImageColorAllocateHEX($im, $outer);
  41. if ($ttf)
  42. {
  43. imagettftext($im_tmp, $size, 0, 0, $height - 2, $black, $fontfile, $text);
  44. imagettftext($im, $size, 0, $x, $y, $color, $fontfile, $text);
  45. $y = $y - $height + 2;
  46. }
  47. else
  48. {
  49. imagestring($im_tmp, $size, 0, 0, $text, $black);
  50. imagestring($im, $size, $x, $y, $text, $color);
  51. }
  52. for ($i = 0; $i {
  53. for ($j = 0; $j {
  54. $c = ImageColorAt($im_tmp, $i, $j);
  55. if ($c !== $white)
  56. {
  57. ImageColorAt ($im_tmp, $i, $j - 1) != $white || imagesetpixel($im, $x + $i, $y + $j - 1, $outer);
  58. ImageColorAt ($im_tmp, $i, $j + 1) != $white || imagesetpixel($im, $x + $i, $y + $j + 1, $outer);
  59. ImageColorAt ($im_tmp, $i - 1, $j) != $white || imagesetpixel($im, $x + $i - 1, $y + $j, $outer);
  60. ImageColorAt ($im_tmp, $i + 1, $j) != $white || imagesetpixel($im, $x + $i + 1, $y + $j, $outer);
  61. // 取消注释,与Fireworks的发光效果相同
  62. /*
  63. ImageColorAt ($im_tmp, $i - 1, $j - 1) != $white || imagesetpixel($im, $x + $i - 1, $y + $j - 1, $outer);
  64. ImageColorAt ($im_tmp, $i + 1, $j - 1) != $white || imagesetpixel($im, $x + $i + 1, $y + $j - 1, $outer);
  65. ImageColorAt ($im_tmp, $i - 1, $j + 1) != $white || imagesetpixel($im, $x + $i - 1, $y + $j + 1, $outer);
  66. ImageColorAt ($im_tmp, $i + 1, $j + 1) != $white || imagesetpixel($im, $x + $i + 1, $y + $j + 1, $outer);
  67. */
  68. }
  69. }
  70. }
  71. imagedestroy($im_tmp);
  72. }
  73. ?>
复制代码

2,调用示例:

  1. header("Content-type: image/png");
  2. $im = imagecreatefromjpeg("bluesky.jpg");
  3. $white = imagecolorallocate($im, 255,255,255);
  4. imagetextouter($im, 9, 10, 20, '#000000', "simsun.ttc", '新年快乐', '#ffffff');
  5. imagetextouter($im, 2, 10, 30, '#FFFF00', "", 'hello, world!' , '#103993');
  6. imagepng($im);
  7. imagedestroy($im);
  8. ?>
复制代码

再来说马赛克:void imagemask ( resource image, int x1, int y1, int x2, int y2, int deep) imagemask() 把坐标 x1,y1 到 x2,y2(图像左上角为 0, 0)的矩形区域加上马赛克。 deep为模糊程度,数字越大越模糊。

效果,如下图:

php图片加马赛克

1,马赛克函数代码:

  1. /**
  2. * GD image mask
  3. *
  4. * @edit bbs.it-home.org
  5. */
  6. function imagemask(&$im, $x1, $y1, $x2, $y2, $deep)
  7. {
  8. for($x = $x1; $x {
  9. for ($y = $y1; $y {
  10. $color = ImageColorAt ($im, $x + round($deep / 2), $y + round($deep / 2));
  11. imagefilledrectangle ($im, $x, $y, $x + $deep, $y + $deep, $color);
  12. }
  13. }
  14. }
  15. ?>
复制代码

2,调用示例:

  1. header("Content-type: image/png");
  2. $im = imagecreatefromjpeg("test.jpg");
  3. imagemask($im, 57, 22, 103, 40, 8);
  4. imagepng($im);
  5. imagedestroy($im);
  6. ?>
复制代码


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage