Картинки в ЖЖ

Картинка, сгенерированная скриптом
Картинка, сгенерированная скриптом


К вопросу об импортировании в ЖЖ картинок.

Где-то на хостинге размещаем скрипт, которому передаётся информация о том, как должна выглядеть картинка. Это могут быть цвета пикселей, закодированная в MIME картинка в любом формате, информация на языке графических примитивов или что-то ещё. В ответ скрипт возвращает отрендеренную часть картинки. Далее скрипт вызывается из тега <IMG> с нужным количеством параметров, а в ЖЖ появляется красочная иллюстрация.

Для проверки своей идеи я сделал несложную реализацию вышесказанного. Картинку скрипт отдаёт в формате BMP, пользователи альтернативных браузеров не обессудьте — GD у меня на хостинге нет, а на более сложные форматы мне время тратить не захотелось. Информация передаётся в виде триплетов RGB, разделённых запятыми. Картинка 32x32, переведённая в такую последовательность заняла в HTML почти 9.5Кб, несколько расточительно, но если использовать другие соглашения, размер можно приблизить к разумному.

Комментарии 34

bacek № 2
base64

… спасёт отца русской демократии. Всего лишь 30 процентов накладных. Так что кусок картинки на 3 кило в один запрос можно сунуть. Плюс не надо мучатся с gd :).
bolk автор № 4
Re: base64

Я о этом упоминал, когда говорил о MIME :)
bacek № 6
Re: base64

Я имел ввиду кодирование по base64 картинки, что бы не передавать её триплетами RGB. А дополнительными параметрами отдавать content-type.
bolk автор № 8
Re: base64

Цитата из моего текста: «закодированная в MIME картинка в любом формате». Это не то же самое?
bolk автор № 5
Re: base64

Кстати, и передавать графические примитивы — не такая плохая идея. :) Если изображение векторное, ненасыщенное и довольно большое, это может занять меньше места, чем растровая графика.
bacek № 7
Re: base64

накойхер? man SVG и ничего, никуда передавать не надо :-)
bolk автор № 9
Re: base64

Что за хрень? :) Не имею сегодня возможности сделать «man…»
bacek № 11
bolk, Re: base64

позор. http://www.w3.org/Graphics/SVG/
bolk автор № 16
bacek, Re: base64

XML-based? Не пойдёт! Слишком расточительно.
bacek № 19
bolk, Re: base64

А какая разница? Его же броузер рендерит, а не твой скрипт :) В крайнем случае Adobe SVG Plugin. Хотя есть сборки мозиллы с встроенным SVG рендерингом.
bolk автор № 20
bacek, Re: base64

В HTML его, думаю, всё равно внедрить нельзя. Object с «datahere» поддерживает только Мазила. Кстати, у IE есть VML.
bacek № 24
bolk, Re: base64

Ндаа… Нет счастья в этом мире…..
С другой стороны, кто мешает упаковать SVG gzip'ом, завернуть в MIME и генерить картинку server-side?
bolk автор № 25
bacek, Re: base64

Разве что так. :) Жаль только, что отдельный плагин нужен. Это убивает всю прелесть пользования таким вариантом на корню.
bolk автор № 26
bolk, Re: base64

В IE «для этого формата нужен плагин» автоматически подразумевает, что ты для его импорта будешь использовать тег OBJECT, а он, как я только что выяснил, вырезается парсером LJ.
bacek № 29
bolk, Re: base64

Бррр… А накойхер плагин при server-side???
bolk автор № 30
bacek, Re: base64

А… ты имеешь ввиду хранить графику SVG (XML), потом gzip'ить, Base64, слать на сервер, а оттуда высылать уже GIF/JPEG/PNG? Всё равно, ты себе представь какие накладные расходы! Не, не пойдёт.
bacek № 31
bolk, Re: base64

А какие расходы-то?? По идее места должно занимать меньше, чем какой-нибудь png. При больших размерах, конечно.
bolk автор № 32
bacek, Re: base64

Как какие? XML — при передаче данных от клиента к серверу и MIME/base64 при получении данных назад. XML и Base64 — это расточительно.
bacek № 33
bolk, Re: base64

Не. Ты меня не так понял :)
Берём твою идею с генерацией картинки сервер-сайд и посовываем в качестве входящих данных замаймленый гзипованый иксемель :) На сервере рендерим картинку и отдаём назад.
bolk автор № 34
bacek, Re: base64

Gzip'ованный XML надо укатать в base64, right? и ещё не ясно что займёт меньше места: XML -> GZip -> base64 или pure XML. Я бы вообще предложил использовать изобресть какой-нить бинарный формат, где в качестве алфавита будут использоваться только те символы, что разрешены в URL.

А отдавать будем назад картинку будем в чём? :) GIF/JPG/PNG?
nasha_sasha № 12
Мысль хорошая, но только кому-то нужно будет отдать целую машину на это — представьте, на каждый запрос отдельный php процесс.

Мой способ, хоть и варварский, но полностью «прозрачный» — никаких сервисов не нужно.
bolk автор № 15
Все недостатки метода я, конечно же, понимаю :) Кстати, жаль, что в LJ не разрешены JavaScript. Я бы мог предложить сразу несколько способов вставки картинки.
kukutz № 13
Простите мой французский

А нахуя?
bolk автор № 17
Re: Простите мой французский

Это же элементарно, Рома! ;) Вся информация твоего ЖЖ будет хранится в одном месте. А у нас всех получается, что текст отдельно, а графика — где придётся.
kukutz № 21
Re[2]: Простите мой французский

Ты знаешь чего?

Ты сперва RFC такое протащи, а потом уже ага. А пока я таких умников
типа тельникова твитить буду :-)))
bolk автор № 22
Re: Re[2]: Простите мой французский

У меня картинка под LJ-cut'ом лежит ;)
aamonster № 14
Да, еще о картинках: есть еще более извращенный способ их генерить, не требующий поддержки от сервера — см. пример (к сожалению, работает только в ie):
https://web.archive.org/web/20030205060724 … olf5k.html