Как создать примитивное изображение в PHP без каких-либо библиотек?

Я запускаю php на интранет-сервере без www-соединения и без каких-либо графических библиотек.
Теперь мне нужно создать цветовой блок 16×16 пикселей (цветной # 86D0FF), и мне было интересно, есть ли способ вернуть требуемую последовательность байтов для такой простой вещи без необходимости устанавливать библиотеки?

Другими словами: я бы хотел добиться следующего без установки GD:

<?php
header("Content-Disposition: Attachment;filename=image.png"); // so that it can be saved...
header("Content-type: image/png");

$img = imagecreate(16,16);
$color = imagecolorallocate( $image , 134 , 208 , 255 );
imagefilledrectangle( $image , 0 , 0 , 16 , 16 , $color );
imagepng( $image );
imagedestroy( $image );

1

Решение

Хорошо, я нашел решение. Создавая сэмплы и сохраняя их в формате JPG, ICO, PNG и GIF и просматривая их с помощью шестнадцатеричного редактора, решил, что GIF выглядит наиболее простым. Итак, я сейчас читаю существующий GIF (как шаблон) и просто манипулирую байтами [37..39], которые (в этом конкретном файле) содержат значение цвета.

Значения цвета, которые я беру из CSS-файла, в котором они определены, поэтому также есть немного синтаксического анализа. Может быть, код может помочь вам вдохновить 😉

<?php

$css = file_get_contents('my.css');
$col = $_GET["col"];   // file is referenced using /coloursample.php?col=#
$patt = '/\.colGroup' . $col . '.*?background-color:.*?\#([A-F0-9]{3,6};/six';
$bin = file_get_contents('sample.gif');
if (preg_match($patt,$css,$regs))
{
$bin[37] = chr(hexdec(substr($regs[1],0,2)));
$bin[38] = chr(hexdec(substr($regs[1],2,2)));
$bin[39] = chr(hexdec(substr($regs[1],4,2)));
}header("Content-Disposition: Attachment; filename=color" . $regs[1] . "gif");
header("Cpntent-type: image/gif");
echo $bin;
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]