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