<?php $im = imageCreateTrueColor(150, 50); $color = imageColorAllocate($im, 128, 128, 128); imageFill($im, 10, 10, $color); $color = imageColorAllocate($im, 255, 255, 255); for ($i = 0; $i < 800; $i++) { $randW = mt_rand(0, imageSX($im)); $randH = mt_rand(0, imageSY($im)); imageSetPixel($im, $randW, $randH, $color); } imageSetThickness($im, 2); $color = imageColorAllocate($im, 100, 100, 100); imageLine($im, 10, 30, 130, 20, $color); $color = imageColorAllocate($im, 70, 70, 70); $n1 = mt_rand(0, 9); imageTtfText($im, 25, 10, mt_rand(2, 10), mt_rand(25, 45), $color, "times.ttf", $n1); $color = imageColorAllocate($im, 255, 0, 50); $str = "ABCDIFGHIJKLMNOPKASTUVWXYZ"; $nw = mt_rand(0, 15); $n2 = $str[$nw]; imageTtftext($im, 22, -10, mt_rand(25, 35), mt_rand(25, 45), $color, "times.ttf", $n2); $color = imageColorAllocate($im, 50, 50, 50); $n3 = mt_rand(0, 9); imageTtfText($im, 25, 15, mt_rand(60, 70), mt_rand(25, 45), $color, "times.ttf", $n3); $color = imageColorAllocate($im, 250, 250, 250); $nw2 = mt_rand(15, 25); $n4 = $str[$nw2]; imageTtfText($im, 22, 30, mt_rand(90, 100), mt_rand(25, 45), $color, "times.ttf", $n4); $color = imageColorAllocate($im, 255, 220, 70); $n5 = mt_rand(0, 9);
$lines[$l]["y1"] = mt_rand(0, imageSY($image)); $lines[$l]["x2"] = mt_rand(0, imageSX($image)); $lines[$l]["y2"] = mt_rand(0, imageSY($image)); $lines[$l]["color"] = imagecolorallocate($image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); imageSetThickness($image, mt_rand(1, 3)); imageLine($image, $lines[$l]["x1"], $lines[$l]["y1"], $lines[$l]["x2"], $lines[$l]["y2"], $lines[$l]["color"]); } for ($a = 0; $a < 7; $a++) { $arcs[$a]["x"] = mt_rand(0, imageSX($image)); $arcs[$a]["y"] = mt_rand(0, imageSY($image)); $arcs[$a]["width"] = mt_rand(0, imageSX($image)); $arcs[$a]["height"] = mt_rand(0, imageSY($image)); $arcs[$a]["u1"] = mt_rand(0, 360); $arcs[$a]["u2"] = mt_rand(0, 360); $arcs[$a]["color"] = imagecolorallocate($image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); imageSetThickness($image, mt_rand(1, 3)); imageArc($image, $arcs[$a]["x"], $arcs[$a]["y"], $arcs[$a]["width"], $arcs[$a]["height"], $arcs[$a]["u1"], $arcs[$a]["u2"], $arcs[$a]["color"]); } for ($p = 0; $p < 999; $p++) { $x = mt_rand(0, imageSX($image)); $y = mt_rand(0, imageSY($image)); $color = imagecolorallocate($image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); imageSetPixel($image, $x, $y, $color); } for ($s = 0; $s < 5; $s++) { $letters[$s]["size"] = mt_rand(25, 35); $letters[$s]["corner"] = mt_rand(-20, 20); if ($s === 0) { $letters[$s]["x"] = 10; } else { $letters[$s]["x"] = $s * 35;
<?php require_once "unicode.php"; $i = imageCreate(400, 400); //Функция imageCreate() - создает новое палитровое изображение возвращает идентификатор изображения(1-ширина изо, 2- высота изо) $color = imageColorAllocate($i, 0, 255, 0); imageFilledRectangle($i, 0, 0, imageSX($i), imageSY($i), $color); //Функция imageFilledRectangle() - рисование закрашенного прямоугольника (1-ресурс изображения, 2 - х-координата точки 1, 3 - у-координата точки 1, 4 - х-координата точки 2, 5 - у-координата точки 2, 6 - цвет заливки) $color = imageColorAllocate($i, 255, 0, 0); imageRectangle($i, 100, 100, 200, 200, $color); //Функция imageRectangle() - рисование прямоугольника (1-ресурс изображения, 2 - х-координата точки 1, 3 - у-координата точки 1, 4 - х-координата точки 2, 5 - у-координата точки 2, 6 - цвет бордера) imageSetThickness($i, 10); //Функция imageSetThickness() - задает толщину линии(1-ресурс изображения, 2-толщина линии) $color = imageColorAllocate($i, 0, 0, 255); imageRectangle($i, 50, 80, 150, 150, $color); imageSetThickness($i, 3); $color = imageColorAllocate($i, 255, 255, 0); imageLine($i, 10, 10, 350, 250, $color); //Функция imageLine() - рисует линию по двум точкам (1-ресурс изображения, 2 - х-координата точки 1, 3 - у-координата точки 1, 4 - х-координата точки 2, 5 - у-координата точки 2, 6 - цвет бордера) $color = imageColorAllocate($i, 255, 255, 255); imageArc($i, 300, 100, 150, 150, 0, 0, $color); //Функция imagearc() - рисует окружность дуги с заданными координатами центра, дуга рисуется по часовой стрелке (1-ресурс изображения, 2 - х-координата центра, 3 - у-координата центра, 4 - ширина дуги, 5 - высота дуги, 6 - угол начала дуги в градусах, 7 - угол окончания дуги в градусах, 8 - цвет дуги ) //Функция imagefilledarc() - рисует и заливает окружность дуги с заданными координатами центра, дуга рисуется по часовой стрелке (1-ресурс изображения, 2 - х-координата центра, 3 - у-координата центра, 4 - ширина дуги, 5 - высота дуги, 6 - угол начала дуги в градусах, 7 - угол окончания дуги в градусах, 8 - цвет дуги ) $color = imageColorAllocate($i, 0, 255, 255); imagefill($i, 130, 130, $color); //Функция imagefill() - производит заливку, начиная с заданных координат точки (1-ресурс изображения, 2 - х-координата точки, 3 - у-координата точки, 4 - цвет заливки, либо можно указать константу заливки IMG_COLOR_TILED) $im = imagecreatefromgif("images/image.gif"); imagesettile($i, $im); //Функция imagesettile() - задает изображение, которое будет использовано в качестве элемента мозаичной заливки (1-ресурс изображения который будут заливать, 2- ресурс изображения для использования мозайчной заливки) imagefill($i, 250, 50, IMG_COLOR_TILED); $color = imagecolorallocate($i, 0, 0, 0);
<?php /*Работа с изображениями.Часть 2 урок 2-12 ***Функция imageCopyResized() - копирование и изменение размера части изображения(1-куда копируем ресурс изо создаваемое, 2-откуда копируем ресурс изо исходное, 3 - х-координата создаваемого изо, 4 - у-координата создаваемого изо, 5 - х-координата исходного изо, 6 - у-координата исходного изо, 7- ширина создаваемого изо, 8 - высота создаваемого изо, 9 - ширина исходного изо, 10 - высота исходного изо) */ $im = imageCreateTrueColor(400, 500); $color = imageColorAllocate($im, 34, 34, 34); imageFill($im, 100, 100, $color); $color = imageColorAllocate($im, 100, 200, 3); imageSetThickness($im, 5); imageLine($im, 0, 0, imageSX($im), imageSY($im), $color); $color = imageColorAllocate($im, 0, 40, 255); imageFilledRectangle($im, 10, 10, 100, 100, $color); $im2 = imageCreateTrueColor(100, 200); imageCopyResized($im2, $im, 0, 0, 50, 50, imageSX($im2), imageSY($im2), 70, 70); header("Content-type: image/png"); imagePng($im2); imageDestroy($im); imageDestroy($im2);
/** * Creates and outputs the final image. */ protected function createImage() { // calculate image width foreach ($this->charWidth as $width) { $this->captchaWidth += $width; } if ($this->captchaWidth + strlen($this->codeWord) * 10 <= 300) { $this->captchaWidth = 300; } // create final image $captcha = imageCreate($this->captchaWidth + 40, $this->captchaHeight); $min = 0; // insert background if (CAPTCHA_RANDOM_BACKGROUND) { for ($y = 1; $y <= $this->elements; $y++) { $size = $elementsArr[$y]['size'] = mt_rand(150, 250); $elementsArr[$y]['pos'] = array(mt_rand($min, $min + $size), mt_rand(20, 80)); $min = $min + $size + 50; } $tempRed = $this->color2['red']; $tempYellow = $this->color2['green']; $tempBlue = $this->color2['blue']; $counter = 0; for ($x = $this->gradientBorder; $x > 0; $x--) { if ($tempRed != $this->color1['red']) { if ($this->gradient['red']['direction'] == 'up') { $tempRed++; } else { $tempRed--; } } if ($tempYellow != $this->color1['green']) { if ($this->gradient['green']['direction'] == 'up') { $tempYellow++; } else { $tempYellow--; } } if ($tempBlue != $this->color1['blue']) { if ($this->gradient['blue']['direction'] == 'up') { $tempBlue++; } else { $tempBlue--; } } $color = imageColorAllocate($captcha, $tempRed, $tempYellow, $tempBlue); foreach ($elementsArr as $element) { imageFilledEllipse($captcha, $element['pos'][0], $element['pos'][1], $element['size'] - $counter, $element['size'] - $counter, $color); } $counter++; } } else { $tempColor = imageColorAllocate($captcha, 255, 255, 255); } // insert character images $counter = $y = 0; foreach ($this->chars as $char) { imageCopy($captcha, $char, $y, mt_rand(0, 30), 0, 0, $this->charWidth[$counter], $this->captchaHeight); imageDestroy($char); $y = $y + $this->charWidth[$counter] + mt_rand(0, 10); $counter++; } // insert random lines if (CAPTCHA_RANDOM_LINES) { for ($x = 1; $x <= $this->lines; $x++) { imageSetThickness($captcha, mt_rand(1, 3)); $pos1 = array('x' => mt_rand(2, $this->captchaWidth - 2), 'y' => mt_rand(2, $this->captchaHeight - 2)); $pos2 = array('x' => mt_rand(2, $this->captchaWidth - 2), 'y' => mt_rand(2, $this->captchaHeight - 2)); $lineColor = imageColorAllocate($captcha, $this->fontColor['red'], $this->fontColor['green'], $this->fontColor['blue']); imageLine($captcha, $pos1['x'], $pos1['y'], $pos2['x'], $pos2['y'], $lineColor); } } // output image imagePng($captcha); // destroy image imageDestroy($captcha); }