2-рдЖрдпрд╛рдореА рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдХреБрдЫ рдорд╛рдкреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рдерд╛, рдкрд░рд┐рдгрд╛рдо рдХреНрд░рдорд╢рдГ рдПрдХ рд╕рдорд╛рди рдЧреНрд░рд┐рдб рдкрд░ рдиреЛрдбрд▓ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЬрд╛рдиреЗ рдЬрд╛рддреЗ рдереЗ, рдХреНрд░рдорд╢рдГ рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдк рдореЗрдВ рдХрдо рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдореБрдЦреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА - рдкрд░рд┐рдгрд╛рдореА рдЫрд╡рд┐ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдФрд░ рдкреНрд░рдХреНрд╖реЗрдк рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреА рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛, рдЗрд╕рд▓рд┐рдП рдкрд╕рдВрдж рдмрд╛рдпреВрдмрд┐рдХ рдкреНрд░рдХреНрд╖реЗрдк рдкрд░ рдЧрд┐рд░ рдЧрдИред
рд╡рд┐рдХреА рд▓реЗрдЦ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рд╕реВрдЦрд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ (рдХрдо рд╕реЗ рдХрдо рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реНрдХреВрд▓ рдХреЗ рдмрд╛рдж рд╕реЗ рдЧрдгрд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛), рд▓реЗрдХрд┐рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рднрдпрд╛рдирдХ рд▓реЗрдЦ рдХрд╛
рд▓рд┐рдВрдХ рднреА рдерд╛ред рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред
рд╢рдмреНрджрд╛рд╡рд▓реА
рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди, рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди - рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧрдгрд┐рдд рдореЗрдВ, рдЬреНрдЮрд╛рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЙрдкрд▓рдмреНрдз рдЕрд╕рддрдд рд╕реЗрдЯ рд╕реЗ рдорд╛рддреНрд░рд╛ рдХреЗ рдордзреНрдпрд╡рд░реНрддреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред
(c) рд╡рд┐рдХреА
рдШрди рдкреНрд░рдХреНрд╖реЗрдк
рдмрд╛рдЗрдмрд┐рдХ рдкреНрд░рдХреНрд╖реЗрдк рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреНрдпреВрдмрд┐рдХ рдкреНрд░рдХреНрд╖реЗрдк рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред
рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди f (x) рдФрд░ рдЗрд╕рдХреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ x = 0 рдФрд░ x = 1 рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рддреАрд╕рд░реЗ рдХреНрд░рдо рдХреЗ рдмрд╣реБрдкрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдВрддрд░рд╛рд▓ [0, 1] рдкрд░ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реВрддреНрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рддреАрд╕рд░рд╛ рдХреНрд░рдо рдмрд╣реБрдкрдж рдФрд░ рдЙрд╕рдХрд╛ рд╡реНрдпреБрддреНрдкрдиреНрди:


рдмрд╣реБрдкрдж рдХреЗ рдорд╛рди рдФрд░ рдЙрд╕рдХреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдмрд┐рдВрджреБ x = 0 рдФрд░ x = 1 рдкрд░




рдЗрди рдЪрд╛рд░ рдкрд╣рдЪрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:




рддреЛ рд╣рдореЗрдВ рдЕрдкрдирд╛ рдкреНрд░рдХреНрд╖реЗрдк рд╕реВрддреНрд░ рдорд┐рд▓рд╛
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рджрд┐рдП рдЧрдП рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдХреБрдЫ рдЬреНрдЮрд╛рдд рдореВрд▓реНрдпреЛрдВ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЛ рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рджрд┐рдП рдЧрдП рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЛ 0 рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЪрд┐рдХрдиреА рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╢рдВрд╕рдиреАрдп рдлрд╝рдВрдХреНрд╢рди рдЧреНрд░рд╛рдлрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдФрд░ рдЕрдЧрд▓реЗ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рд░реЗрдЦрд╛ рдврд▓рд╛рди рд▓реЗрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ 4 рдЕрдВрдХ рдЪрд╛рд╣рд┐рдПред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ x = -1, x = 0, x = 1 рдФрд░ x = 2 рдкрд░ рдХреНрд░рдорд╢рдГ p0, p1, P2 рдФрд░ p3 рдореЗрдВ 4 рдлрд╝рдВрдХреНрд╢рди рдорд╛рди рд╣реИрдВред рдкреНрд░рд╛рдкреНрдд рдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ f (0), f (1), f (2) рдФрд░ f (3):




рдЗрди рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рддреБрд▓рдирд╛ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рд╕реВрддреНрд░реЛрдВ рд╕реЗ рдХрд░реЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ:




рдкрд░рд┐рдгрд╛рдо:

PHP рдореЗрдВ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
function cubicInterpolate ($p, $x) { return $p[1] + (-0.5 * $p[0] + 0.5 * $p[2]) * $x + ($p[0] - 2.5 * $p[1] + 2.0 * $p[2] - 0.5 * $p[3]) * $x * $x + (-0.5 * $p[0] + 1.5 * $p[1] - 1.5 * $p[2] + 0.5 * $p[3]) * $x * $x * $x; }
рдмрд╛рдЗрдХреНрдпреВрдмрд┐рдХ рдкреНрд░рдХреНрд╖реЗрдк
рдмрд╛рдЗрдмрд┐рдХ рдкреНрд░рдХреНрд╖реЗрдк рджреЛ рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рдПрдХ рдШрди рдкреНрд░рдХреНрд╖реЗрдк рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдЕрдзрд┐рдХ рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдо 16 рдЕрдВрдХ p
ij рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рдЙрддреНрдкрддреНрддрд┐ (i-1, j-1) рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИ, рдЬрд╣рд╛рдБ i, j 0 рд╕реЗ 3 рддрдХ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдлрд┐рд░, рд╣рдо рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рддрд╣ рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ [0,0] x [ 1,1], рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо 4 рд╕реНрддрдВрднреЛрдВ рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рджрд┐рд╢рд╛ рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

рдкрд╣рд▓реЗ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд PHP рд╡рд┐рдзрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
function bicubicInterpolate ($p, $x, $y) { $tmp = array(); $tmp[0] = cubicInterpolate($p[0], $y); $tmp[1] = cubicInterpolate($p[1], $y); $tmp[2] = cubicInterpolate($p[2], $y); $tmp[3] = cubicInterpolate($p[3], $y); return cubicInterpolate($tmp, $x); }
рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ - рдкреНрд░рджрд░реНрд╢рдиред рдбреЗрдЯрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рдорд╛рддреНрд░рд╛ рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдВрднреАрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред
рдмрд╣реБрдЖрдпрд╛рдореА рдмрд╣реБрдкрдж рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рд╕реВрддреНрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд░реВрдк рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:
g (x, y) = a00 * x ^ 0 * y ^ 0 + a01 * x ^ 0 * y ^ 1 +
a02 * x ^ 0 * y ^ 2 + a03 * x ^ 0 * y ^ 3 +
a10 * x ^ 1 * y ^ 0 + a11 * x ^ 1 * y ^ 1 +
a12 * x ^ 1 * y ^ 2 + a13 * x ^ 1 * y ^ 3 +
a20 * x ^ 2 * y ^ 0 + a21 * x ^ 2 * y ^ 1 +
a22 * x ^ 3 * y ^ 2 + a23 * x ^ 2 * y ^ 3 +
a30 * x ^ 3 * y ^ 0 + a31 * x ^ 3 * y ^ 1 +
a32 * x ^ 3 * y ^ 2 + a33 * x ^ 3 * y ^ 3
рдЕрдм рдЖрдкрдХреЛ рдЧреБрдгрд╛рдВрдХ рдПрдХ
рдЖрдИрдЬреЗ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рдЧреБрдгрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЙрдиреНрд╣реЗрдВ [0,0] рд╕реЗ [1,1] рддрдХ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
















рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ:
class CachedBicubicInterpolator { private $a00, $a01, $a02, $a03, $a10, $a11, $a12, $a13, $a20, $a21, $a22, $a23, $a30, $a31, $a32, $a33; public function updateCoefficients ($p) { $this->a00 = $p[1][1]; $this->a01 = -.5 * $p[1][0] + .5 * $p[1][2]; $this->a02 = $p[1][0] - 2.5 * $p[1][1] + 2 * $p[1][2] - .5 * $p[1][3]; $this->a03 = -.5 * $p[1][0] + 1.5 * $p[1][1] - 1.5 * $p[1][2] + .5 * $p[1][3]; $this->a10 = -.5 * $p[0][1] + .5 * $p[2][1]; $this->a11 = .25 * $p[0][0] - .25 * $p[0][2] - .25 * $p[2][0] + .25 * $p[2][2]; $this->a12 = -.5 * $p[0][0] + 1.25 * $p[0][1] - $p[0][2] + .25 * $p[0][3] + .5 * $p[2][0] - 1.25 * $p[2][1] + $p[2][2] - .25 * $p[2][3]; $this->a13 = .25 * $p[0][0] - .75 * $p[0][1] + .75 * $p[0][2] - .25 * $p[0][3] - .25 * $p[2][0] + .75 * $p[2][1] - .75 * $p[2][2] + .25 * $p[2][3]; $this->a20 = $p[0][1] - 2.5 * $p[1][1] + 2 * $p[2][1] - .5 * $p[3][1]; $this->a21 = -.5 * $p[0][0] + .5 * $p[0][2] + 1.25 * $p[1][0] - 1.25 * $p[1][2] - $p[2][0] + $p[2][2] + .25 * $p[3][0] - .25 * $p[3][2]; $this->a22 = $p[0][0] - 2.5 * $p[0][1] + 2 * $p[0][2] - .5 * $p[0][3] - 2.5 * $p[1][0] + 6.25 * $p[1][1] - 5 * $p[1][2] + 1.25 * $p[1][3] + 2 * $p[2][0] - 5 * $p[2][1] + 4 * $p[2][2] - $p[2][3] - .5 * $p[3][0] + 1.25 * $p[3][1] - $p[3][2] + .25 * $p[3][3]; $this->a23 = -.5 * $p[0][0] + 1.5 * $p[0][1] - 1.5 * $p[0][2] + .5 * $p[0][3] + 1.25 * $p[1][0] - 3.75 * $p[1][1] + 3.75 * $p[1][2] - 1.25 * $p[1][3] - $p[2][0] + 3 * $p[2][1] - 3 * $p[2][2] + $p[2][3] + .25 * $p[3][0] - .75 * $p[3][1] + .75 * $p[3][2] - .25 * $p[3][3]; $this->a30 = -.5 * $p[0][1] + 1.5 * $p[1][1] - 1.5 * $p[2][1] + .5 * $p[3][1]; $this->a31 = .25 * $p[0][0] - .25 * $p[0][2] - .75 * $p[1][0] + .75 * $p[1][2] + .75 * $p[2][0] - .75 * $p[2][2] - .25 * $p[3][0] + .25 * $p[3][2]; $this->a32 = -.5 * $p[0][0] + 1.25 * $p[0][1] - $p[0][2] + .25 * $p[0][3] + 1.5 * $p[1][0] - 3.75 * $p[1][1] + 3 * $p[1][2] - .75 * $p[1][3] - 1.5 * $p[2][0] + 3.75 * $p[2][1] - 3 * $p[2][2] + .75 * $p[2][3] + .5 * $p[3][0] - 1.25 * $p[3][1] + $p[3][2] - .25 * $p[3][3]; $this->a33 = .25 * $p[0][0] - .75 * $p[0][1] + .75 * $p[0][2] - .25 * $p[0][3] - .75 * $p[1][0] + 2.25 * $p[1][1] - 2.25 * $p[1][2] + .75 * $p[1][3] + .75 * $p[2][0] - 2.25 * $p[2][1] + 2.25 * $p[2][2] - .75 * $p[2][3] - .25 * $p[3][0] + .75 * $p[3][1] - .75 * $p[3][2] + .25 * $p[3][3]; } public function getValue ($x, $y) {
рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдмрд╛рдЗрдмрд┐рдХ рдкреНрд░рдХреНрд╖реЗрдк рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рд╕реНрд░реЛрдд рдбреЗрдЯрд╛: рдбреЗрдЯрд╛ рд╕рд░рдгреА 7 x 7 рдЕрдВрдХ
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рд╕рддрд╣ рдХреЛ 300 x 300 рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВред
рдореИрдВрдиреЗ рдХреЛрдб рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреА рдпрдерд╛рд╕рдВрднрд╡ рдХреЛрд╢рд┐рд╢ рдХреА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛
<?php header("Content-type: image/png");
рд░рдВрдЧ рдорд╛рдирдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓
function createColormap(&$image) { $colormap = array(); for ($i = 0; $i < 256; $i ++) { $colormap[$i] = imagecolorallocate($image, 0, $i, 255); } for ($i = 0; $i < 256; $i ++) { $colormap[$i + 256] = imagecolorallocate($image, 0, 255, 255 - $i); } for ($i = 0; $i < 256; $i ++) { $colormap[$i + 512] = imagecolorallocate($image, $i, 255, 0); } for ($i = 0; $i < 256; $i ++) { $colormap[$i + 768] = imagecolorallocate($image, 255, 255 - $i, 0); } return $colormap; }
рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо:
