Отрисовка чебурашки графическими примитивами библиотеки GD
Опубликовано 10 ноября, 2022 - 23:50 пользователем mgermanchuk
Используя графические примитивы можно строить сложные узнаваемые изображения. Например, Чебурашку из детской книги Эдуарда Успенского:

<?php header("Content-Type:image/jpeg"); $img = imageCreateTrueColor(600,500); imagefilledrectangle($img,0,0,600,500,imagecolorallocate($img,255,255,255)); $black = imagecolorallocate($img,0,0,0); //Тело imagearc($img, 322, 311, 178, 178, 154, 195, $black); imagearc($img, 271, 312, 180, 180, 344, 26, $black); imagearc($img, 218, 352, 371, 371, 318, 0, $black); imagearc($img, 385, 341, 42, 42, 26, 155, $black); imagearc($img, 202, 341, 328, 328, 342, 3, $black); imagearc($img, 363, 345, 347, 347, 178, 224, $black); imagearc($img, 208, 340, 42, 42, 28, 153, $black); imagearc($img, 388, 343, 324, 324, 178, 200, $black); imagepolygon($img, array( 189, 350, 188, 369, 194, 364, 199, 368, 202, 361), 5, $black); imagepolygon($img, array( 404, 350, 410, 366, 402, 362, 400, 368, 394, 360), 5, $black); imagearc($img, 343, 256, 164, 164, 157, 197, $black); imagearc($img, 298, 262, 80, 80, 44, 140, $black); imagearc($img, 238, 262, 188, 188, 343, 17, $black); //Правая нога imagearc($img, 190, 495, 308, 308, 290, 314, $black); imagearc($img, 350, 368, 112, 112, 142, 165, $black); imagearc($img, 350, 320, 188, 188, 100, 119, $black); imageline($img, 335, 413, 369, 413, $black); imagearc($img, 366, 385, 56, 56, 41, 85, $black); imagearc($img, 371, 389, 44, 44, 353, 41, $black); imagearc($img, 326, 420, 150, 150, 291, 333, $black); //Левая нога imagearc($img, 394, 487, 286, 286, 227, 254, $black); imagearc($img, 270, 382, 52, 52, 3, 53, $black); imagearc($img, 258, 370, 86, 86, 51, 93, $black); imageline($img, 257, 413, 222, 413, $black); imagearc($img, 223, 388, 50, 50, 94, 143, $black); imagearc($img, 227, 387, 56, 56, 146, 183, $black); imagearc($img, 270, 428, 166, 166, 211, 251, $black); //Лицо imagearc($img, 249, 133, 48, 48, 0, 360, $black); imagearc($img, 251, 128, 38, 38, 0, 360, $black); imagearc($img, 258, 119, 10, 10, 0, 360, $black); imagearc($img, 352, 133, 49, 49, 0, 360, $black); imagearc($img, 354, 126, 36, 36, 0, 360, $black); imagearc($img, 360, 117, 10, 10, 0, 360, $black); imageellipse($img, 240, 92, 30, 14, $black); imageellipse($img, 358, 90, 28, 14, $black); imagearc($img, 301, 178, 28, 28, 41, 140, $black); imagepolygon($img, array( 301, 143, 314, 167, 301, 159, 287, 167), 4, $black); imageellipse($img, 301, 143, 204, 170, $black); imageellipse($img, 301, 143, 260, 188, $black); imagearc($img, 475, 144, 180, 180, 220, 142, $black); imagearc($img, 123, 144, 187, 187, 37, 322, $black); imagearc($img, 133, 146, 135, 135, 38, 319, $black); imagearc($img, 463, 146, 126, 126, 225, 140, $black); //Заливка цветом imagefilltoborder($img, 249, 136, $black, $black); imagefilltoborder($img, 364, 136, $black, $black); imagefilltoborder($img, 404, 358, $black, $black); imagefilltoborder($img, 191, 360, $black, $black); imagefilltoborder($img, 123, 128, $black, imagecolorallocate($img, 105, 36, 21)); imagefilltoborder($img, 463, 128, $black, imagecolorallocate($img, 105, 36, 21)); imagefilltoborder($img, 350, 370, $black, imagecolorallocate($img, 138, 65, 50)); imagefilltoborder($img, 250, 370, $black, imagecolorallocate($img, 138, 65, 50)); imagefilltoborder($img, 358, 90, $black, imagecolorallocate($img, 138, 65, 50)); imagefilltoborder($img, 240, 92, $black, imagecolorallocate($img, 138, 65, 50)); imagefilltoborder($img, 48, 128, $black, imagecolorallocate($img, 138, 65, 50)); imagefilltoborder($img, 543, 128, $black, imagecolorallocate($img, 138, 65, 50)); imagefilltoborder($img, 232, 213, $black, imagecolorallocate($img, 138, 65, 50)); imagefilltoborder($img, 301, 155, $black, imagecolorallocate($img, 138, 65, 50)); imagefilltoborder($img, 270, 320, $black, imagecolorallocate($img, 138, 65, 50)); imagefilltoborder($img, 300, 200, $black, imagecolorallocate($img, 255, 208, 100)); imagefilltoborder($img, 290, 262, $black, imagecolorallocate($img, 255, 208, 100)); imagejpeg($img,NULL,100); ?>
Направление: