Редактировать: я пытался описать эту проблему, используя разметку, которую использую в настоящее время, но это, похоже, вызывает путаницу. Посмотрите историю изменений, если вы хотите увидеть, что вопрос неясен

Я хотел бы написать php-скрипт, генерирующий изображение из пользовательского контента.

Контент представляет собой блок текста неопределенной длины на фоне. Текст может быть любым, от пары слов до нескольких предложений.

Может быть от 1 до 6 таких блоков текста, которые будут различаться по размеру. Итак, поскольку текст различается по длине, контейнер/фон будет различаться по высоте. И поскольку у меня может быть несколько блоков, общее изображение будет различаться по высоте.

Учитывая, что мне нужно динамически изменить размер большей части этого (само изображение, текстовые контейнеры, возможно, размер шрифта), и я действительно даже не знаю, с чего начать с библиотекой GD, мои первые вопросы:

Это возможно?

Если возможно, можно ли реализовать без тонны головной боли?

Есть ли кроссплатформенная альтернатива (желательно без флэш-памяти и, вероятно, без <canvas>)?

0
Chris Sobolewski 23 Мар 2011 в 18:22
Насколько я понимаю, вы хотели бы генерировать весь материал в виде изображения вместо HTML, я прав?
 – 
Imi Borbas
23 Мар 2011 в 18:27
Это правильно. К сожалению, лучший способ описать это — использовать HTML, который я уже использую. Извините, я знаю, что это, вероятно, сбивает с толку.
 – 
Chris Sobolewski
23 Мар 2011 в 18:28
Какую функцию вы не можете реализовать в HTML, поэтому вам нужно сгенерировать ее изображение?
 – 
Imi Borbas
23 Мар 2011 в 18:30
Я хотел бы работать с Zazzle API для создания футболок, кружек и т. д. Для них требуется изображение. Можно отправить текст, но мне все равно понадобится стоковое изображение таким образом (иначе я потеряю изображение, что приведет к потере большого количества контекста), так что это менее оптимально.
 – 
Chris Sobolewski
23 Мар 2011 в 18:33
Так что это очень особая проблема. Потратив всего пару минут на гугление, я бы сказал, что невозможно обойтись без тонны головной боли, но я не хотел вас обескураживать.
 – 
Imi Borbas
23 Мар 2011 в 18:39

1 ответ

Существует функция PHP, которая получает размер изображения и возвращает его в виде массива.

$image_data = getimagesize($image_path);

Возвращает массив индексов с 4 элементами:

  • 0: ширина в пикселях
  • 1: высота в пикселях
  • 2: введите целое число (1-GIF, 2-JPG, 3-PNG, 4-SWF, 5-PSD и т. д.)
  • 3: строка "высота='(высота)' ширина='(ширина)'

Вы можете использовать $image_data[0] и $image_data[1], чтобы вернуть правильную ширину/высоту, которую вы можете использовать для динамического изменения размера контейнеров и многого другого.

Другие проблемы, которые у вас есть, несколько превышают количество времени, которое я могу уделить сообщению в данный момент. Возможно, позже я смогу разъяснить их. Удачи.

0
Jemaclus 23 Мар 2011 в 18:42
К сожалению, мне нужно перейти HTML => Изображение, а не наоборот.
 – 
Chris Sobolewski
23 Мар 2011 в 18:44