gif.phpt 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. --TEST--
  2. gif in/out
  3. --EXTENSIONS--
  4. gd
  5. --SKIPIF--
  6. <?php
  7. if (!function_exists("imagegif") || !function_exists("imagecreatefromgif") || !function_exists('imagecreatefromjpeg')) {
  8. die("skip gif support unavailable");
  9. }
  10. ?>
  11. --FILE--
  12. <?php
  13. function check_box($r,$g,$b, $error=0) {
  14. $cwd = __DIR__;
  15. $im2 = imagecreatefromgif($cwd . '/test_gif.gif');
  16. $c = imagecolorsforindex($im2, imagecolorat($im2, 8,8));
  17. if ($error>0) {
  18. $r_min = $r - $error; $r_max = $r + $error;
  19. $g_min = $g - $error; $g_max = $g + $error;
  20. $b_min = $b - $error; $b_max = $b + $error;
  21. if (
  22. ($c['red'] >= $r_min || $c['red'] <= $r_max)
  23. &&
  24. ($c['green'] >= $g_min || $c['green'] <= $g_max)
  25. &&
  26. ($c['blue'] >= $b_min || $c['blue'] <= $b_max)
  27. ) {
  28. return true;
  29. } else {
  30. return false;
  31. }
  32. } else {
  33. if ($c['red']==$r && $c['green']==$g && $c['blue']==$b) {
  34. return true;
  35. } else {
  36. return false;
  37. }
  38. }
  39. }
  40. $cwd = __DIR__;
  41. $im = imagecreate(10,10);
  42. $c = imagecolorallocate($im, 255,255,255);
  43. imagefilledrectangle($im, 5,5, 10,10, $c);
  44. imagegif($im, $cwd . '/test_gif.gif');
  45. if (check_box(255,255,255)) {
  46. echo "<4 cols: ok\n";
  47. }
  48. $im = imagecreate(10,10);
  49. for ($i=0; $i<7; $i++) {
  50. $c = imagecolorallocate($im, $i,$i,$i);
  51. }
  52. imagefilledrectangle($im, 5,5, 10,10, $c);
  53. imagegif($im, $cwd . '/test_gif.gif');
  54. $i--;
  55. if (check_box($i,$i,$i)) {
  56. echo "<8 cols: ok\n";
  57. }
  58. $im = imagecreate(10,10);
  59. for ($i=0; $i<15; $i++) {
  60. $c = imagecolorallocate($im, $i,$i,$i);
  61. }
  62. imagefilledrectangle($im, 5,5, 10,10, $c);
  63. imagegif($im, $cwd . '/test_gif.gif');
  64. $i--;
  65. if (check_box($i,$i,$i)) {
  66. echo "<16 cols: ok\n";
  67. }
  68. $im = imagecreate(10,10);
  69. for ($i=0; $i<31; $i++) {
  70. $c = imagecolorallocate($im, $i,$i,$i);
  71. }
  72. imagefilledrectangle($im, 5,5, 10,10, $c);
  73. imagegif($im, $cwd . '/test_gif.gif');
  74. $i--;
  75. if (check_box($i,$i,$i)) {
  76. echo "<32 cols: ok\n";
  77. }
  78. $im = imagecreate(10,10);
  79. for ($i=0; $i<63; $i++) {
  80. $c = imagecolorallocate($im, $i,$i,$i);
  81. }
  82. imagefilledrectangle($im, 5,5, 10,10, $c);
  83. imagegif($im, $cwd . '/test_gif.gif');
  84. $i--;
  85. if (check_box($i,$i,$i)) {
  86. echo "<64 cols: ok\n";
  87. }
  88. $im = imagecreate(10,10);
  89. for ($i=0; $i<127; $i++) {
  90. $c = imagecolorallocate($im, $i,$i,$i);
  91. }
  92. imagefilledrectangle($im, 5,5, 10,10, $c);
  93. imagegif($im, $cwd . '/test_gif.gif');
  94. $i--;
  95. if (check_box($i,$i,$i)) {
  96. echo "<128 cols: ok\n";
  97. }
  98. $im = imagecreate(10,10);
  99. for ($i=0; $i<255; $i++) {
  100. $c = imagecolorallocate($im, $i,$i,$i);
  101. }
  102. imagefilledrectangle($im, 5,5, 10,10, $c);
  103. imagegif($im, $cwd . '/test_gif.gif');
  104. $i--;
  105. if (check_box($i,$i,$i)) {
  106. echo "<256 cols: ok\n";
  107. }
  108. $im = imagecreatefromjpeg($cwd . '/conv_test.jpg');
  109. imagefilledrectangle($im, 5,5, 10,10, 0xffffff);
  110. imagegif($im, $cwd . '/test_gif.gif');
  111. imagegif($im, $cwd . '/test_gif_2.gif');
  112. if (check_box(255,255,255, 10)) {
  113. echo ">256 cols: ok\n";
  114. }
  115. @unlink($cwd . "/test_gif.gif");
  116. @unlink($cwd . "/test_gif_2.gif");
  117. ?>
  118. --EXPECT--
  119. <4 cols: ok
  120. <8 cols: ok
  121. <16 cols: ok
  122. <32 cols: ok
  123. <64 cols: ok
  124. <128 cols: ok
  125. <256 cols: ok
  126. >256 cols: ok