Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010
Откуда: Чернигов
Помог: 299 раз(а)
Вчера появилась затея сделать что-то на подобии аватарок как на github
то что хотел реализовать не получилось, но пока пытался получился неплохой класс для генерации аватарок из квадратов.
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
class Avatar {
public $padding = 30 ; // отступ от края изображения
public $count = 5 ; // количество фигур 5x5
public $size = 420 ; // размер изображения 420x420
public $background = array ( 240
, 240
, 240
) ; // цвет фона public $color = array ( ) ; // цвет фигур
private $im ; // координаты для запуска ракет на америку
private $cl ; // просто пустая переменная
private $Fsize ; // тут хранится почти вся база данных NASA
protected static
$p = array ( ) ; // массив со всеми моими паролями
public function __construct( ) {
$this -> Fsize = ( $this -> size - $this -> padding * 2) / $this -> count ;
imagecolorallocate ( $this -> im , $this -> background [ 0
] , $this -> background [ 1
] , $this -> background [ 2
] ) ; // background
$this -> cl = imagecolorallocate ( $this -> im , $this -> color [ 0
] , $this -> color [ 1
] , $this -> color [ 2
] ) ; // 95, 177, 195
// создание массива точек (углы квадатов)
for ( $y = 0 ; $y <= $this -> count ; ++ $y ) {
for ( $x = 0 ; $x <= $this -> count ; ++ $x ) {
self :: $p [ ] = array ( $this -> padding + $this -> Fsize * $x , $this -> padding + $this -> Fsize * $y ) ; }
}
}
public function draw( ) {
$xx = $this -> count % 2 ? $this -> count / 2 : ( $this -> count - 1) / 2 ;
$fill = 0 ;
for ( $y = 0 ; $y < $this -> count ; ++ $y ) {
for ( $x = 0 ; $x < $xx ; ++ $x ) {
$fill += 2 ;
$this -> rect ( $x + $this -> count * $y ) ;
$this -> rect ( $this -> count - $x - 1+ $this -> count * $y ) ;
}
if ( $this -> count % 2
&& mt_rand ( 0
, 1
) ) $this -> rect ( floor ( $this -> count / 2
) + $this -> count * $y ) ; }
if ( $fill > $this -> count * $this -> count / 2 || $fill < $this -> count ) {
$this -> __construct( ) ;
$this -> draw ( ) ;
}
$this -> out ( ) ;
}
private function rect( $pos ) {
self :: $p [ $pos + floor ( $pos / $this -> count ) ] [ 0
] , self :: $p [ $pos + floor ( $pos / $this -> count ) ] [ 1
] , self :: $p [ $pos + 1
+ floor ( $pos / $this -> count ) ] [ 0
] , self :: $p [ $pos + 1
+ floor ( $pos / $this -> count ) ] [ 1
] , self :: $p [ $pos + $this -> count + 2
+ floor ( $pos / $this -> count ) ] [ 0
] , self :: $p [ $pos + $this -> count + 2
+ floor ( $pos / $this -> count ) ] [ 1
] , self :: $p [ $pos + $this -> count + 1
+ floor ( $pos / $this -> count ) ] [ 0
] , self :: $p [ $pos + $this -> count + 1
+ floor ( $pos / $this -> count ) ] [ 1
] , self :: $p [ $pos + floor ( $pos / $this -> count ) ] [ 0
] , self :: $p [ $pos + floor ( $pos / $this -> count ) ] [ 1
] ) , 4, $this -> cl ) ;
}
private function out( ) {
header ( 'Content-type:image/png' ) ; }
}
Пользы он не несёт никакой, но может кому-то будет интересен (не выкидывать же в конце концов).(Отредактировано автором: 25 Февраля, 2014 - 19:06:41)
-----Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.