производительность — генерировать большой прозрачный GIF в PHP без использования imagecreate

Мне нужно сгенерировать прозрачный GIF нестандартного размера без использования imagecreate () или imagecreatetruecolor () по соображениям памяти / производительности.
Мне нужно, чтобы изображение было как можно меньше, поэтому я хотел бы использовать не GCT, а только GCE, задающий прозрачность, например, для изображения размером 200x200px, например:

47 49 46 38 39 61 - GIF89a
C8 00 - 200px
C8 00 - 200px
00 - No GCT
00 00
21 F9 - Graphic Control Extension
04 01 0A 00 01 - colour #1 is transparent (I've seen this work on a 1x1 transparent GIF also without GCT)
00  - section separator
2C - image block
00 00 00 00 - block start position x=0, y=0
C8 00 C8 00 - block width and height, actually the image size
00 - section separator
? - image data follows
00 - section separator
3B - image end

До сих пор я мог генерировать вышеупомянутую структуру GIF, но часть, в которой я застрял, — это то, где мне нужно создать закодированные данные LZW.
Для прозрачного пиксельного изображения 1×1, которое работает, я видел следующие байты:

02 - LZW minimum code size
02 - LZW data length
4C 01 - actual LZW data

Во-первых, у меня есть сомнения в понимании того, как это расшифровывается. Означает ли это, что таблица отображения LZW имеет 3-битные коды? Если да, то как он отображается в байтах?

Может ли кто-нибудь объяснить или предоставить фрагмент кода, который будет генерировать данные LZW для прозрачного GIF произвольной ширины x высоты?

1

Решение

Наконец, я сохранил блок как прозрачный блок 1×1, который действителен и работает во всех браузерах.
При таком подходе вам также необходимо сохранить размеры блока до 1 x 1, например:

2C - image block
00 00 00 00 - block start position x=0, y=0
01 00 01 00 - block width and height, actually the image size
1

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

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

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