Динамическое создание изображений

Можно ли преобразовать какую-то часть веб-страницы в изображение. Допустим, у меня есть div, который содержит текст и изображение внутри. Я хочу сохранить весь этот div как изображение на стороне сервера, чтобы я мог использовать это изображение в следующий раз.

Не могли бы вы дать мне знать, есть ли расширение jquery плагин / php, которое делает это. Я только что узнал это http://www.visionmasterdesigns.com/tutorial-convert-text-into-transparent-png-image-using-php/

но это просто преобразование текста в PNG. Но я хочу преобразовать в изображение.

Заранее спасибо.

С уважением, ~ Шафи

12.12.2008 10:01:02
Что-то не хватает в «Но я хочу преобразовать в изображение». ?
Jonas Elfström 12.12.2008 10:04:41
7 ОТВЕТОВ

Я уверен, что вы не можете сделать это в JavaScript / jQuery. В любом случае, не без плагинов.

Также звучит немного странно, чтобы хранить текст в виде изображения.

0
12.12.2008 10:09:16

Вы можете изучить возможность использования одной из услуг, которая делает это. Большинство из них делают эскизы в соответствии с тем, что вкусно использует. Но http://www.webshotspro.com/ похоже, что он может делать в полном разрешении. Есть ли способ, которым вы можете использовать их API, чтобы получить скриншот, а затем обрезать нужную часть? Это действительно зависит от того, что / почему вы заботитесь об этом.

0
12.12.2008 10:23:51

Вы можете использовать движок браузера, отображающий страницу как изображение, а затем вырезать запрошенный раздел страницы.

Я не знаю, есть ли расширение jquery или php, которое делает это за вас, но вы могли бы использовать вызов exec и использовать, например, CutyCapt, чтобы отобразить страницу, и расширение обработки изображений, чтобы обрезать ее. Я не тестировал программное обеспечение сам, но это только начало.

3
12.12.2008 10:24:34

Определенно не делайте этого на клиенте, даже если бы был способ сделать это (элемент js и canvas), вы должны были бы верить клиенту (и спаммеры могли бы использовать его, чтобы показывать вам рекламу вместо ваших частичных снимков экрана), зависит от шрифтов клиента, настроек цвета и т. д.

Правильный способ сделать это - на сервере, либо вызвать браузер командной строки Come, получить скриншот программно и закрыть его (но это будет очень сложно реализовать, облагая налогом сервер и что произойдет, когда вы, например, очистите кеш? популярный сайт, все может быть перерисовано сразу, и попытаться разместить более 100 экземпляров браузера в ОЗУ ...).

Я мог бы:

  1. Подумайте, действительно ли мне нужно сделать это таким образом, и есть ли лучшее решение первоначальной проблемы (вам нужно преобразовать части сайта в изображения именно для этого? Кэширует ли эта часть html свое дело? Или Iframe?)
  2. Если да, сделайте это с поддерживаемыми PHP графическими библиотеками, такими как GD, вам придется составлять чертеж самостоятельно, возможно, есть некоторые библиотеки, которые позволят сделать это на более высоком уровне (заполнение области макета текстом вместо разбиения вручную это построчно и т.д ...)
0
12.12.2008 14:52:57

Что именно вы пытаетесь достичь этим?

Субтитры в стиле LOLcat? Я бы использовал Gd2 и изменил бы изображение напрямую.

Упрощенный макет веб-страницы? Вероятно, быстрее кешировать исходный код div. Я бы также посоветовал создать несколько вручную и сравнить итоговые размеры передачи файлов. Держу пари, что почти во всех обстоятельствах (исходный HTML + изображение) меньше, чем (полученное изображение).

1
12.12.2008 15:08:00

Если вы решили сделать изображение, вы должны

  1. вызвать автономный веб-браузер или
  2. встроить (X) механизм рендеринга HTML, или
  3. ограничьте параметры ввода так, чтобы вы могли написать (очень упрощенный) пользовательский рендер или
  4. делегировать работу внешней службе

Все это зависит от операционной системы сервера, от того, какое программное обеспечение на нем доступно, и какой доступ к нему у вас есть.

  1. в Windows: вызовите IE с помощью автоматизации COM; в Linux: см. http://www.chimeric.de/blog/2007/1018_automated_screenshots_using_bash_firefox_and_imagemagick

  2. в Windows: см. http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.aspx ; в Linux см. http://webkit.org/building/build.html или http://khtml2png.sourceforge.net/. Вы также можете рассмотреть привязки PHP-Qt или PHP-GTK.

Надеюсь, это поможет.

0
12.12.2008 21:39:11

«У меня есть образец div, который предоставляется пользователю для его изменения. Он содержит два изображения и некоторый текст. Он может выбрать изображение из множества предлагаемых нами. Наконец, я хочу сохранить его как одно большое изображение».

В этом случае захват экрана на стороне клиента - неправильный путь. Вы должны разрешить компоновку изображения в браузере пользователя (как кажется, вы сделали эту часть), но затем браузер должен отправить обратно информацию, необходимую для воссоздания изображения * на сервере, что вы затем делаете с GD, ImageMagick или что-то подобное. Это будет проще, чище и быстрее во многих отношениях :)

*например:

  • imageid: 7
  • текст: "бла"
  • textcolour: #ffffff
  • размер текста: 3
  • textx: 10
  • Текст: 10

РЕДАКТИРОВАТЬ: Вы, вероятно, также должны поставить цитируемую часть в вопрос, так как это не совсем ясно из оригинального сообщения.

2
15.12.2008 16:51:53