Добавить пробел к изображению и сохранить файл на сервер - PullRequest
1 голос
/ 05 января 2012

У меня есть скрипт, который генерирует HTML для новостных рассылок. Я плаваю изображение, используя «align = left» и оборачивая текст вокруг него. Я использую встроенный стиль CSS, в данном случае margin-right, чтобы дать изображению некоторую передышку. Outlook игнорирует это. Outlook также игнорирует отступы - я даже пробовал 10px border-right, он тоже это игнорировал.

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

У меня нет опыта работы с GD или сохранения файлов в PHP. Вот мой код изображения:

<img alt="<?php print $main2['title']; ?>" height="127" width="185" src="http://www.mydomain.com/uploads/<?php print $main2['filename']; ?>" align="left" style="margin:8px 8px 0 0;"/>

Ответы [ 3 ]

3 голосов
/ 06 января 2012

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

Нет проблем, если у нас есть папка на нашем веб-сервере, где есть несколько тысяч небольших измененных изображений.

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

FWIW, мне удалось это сделать сGD - не так сложно, как я думал - опубликует сценарий, если кому-то еще понадобится:

// get image
$url = 'myimage.jpg';
$src = imagecreatefromjpeg($url);

// dimensions (just to be safe, should always be 185x127 though)
$src_wide = imagesx($src);
$src_high = imagesy($src);

// set white padding color
$clear = array('red'=>255,'green'=>255,'blue'=>255);

// new image dimensions with right padding
$dst_wide = $src_wide+8;
$dst_high = $src_high+8;

// New resource image at new size
$dst = imagecreatetruecolor($dst_wide, $dst_high);

// fill the image with the white padding color
$clear = imagecolorallocate( $dst, $clear["red"], $clear["green"], $clear["blue"]);
imagefill($dst, 0, 0, $clear);

// copy the original image on top of the new one
imagecopymerge($dst,$src,0,8,0,0,$src_wide,$src_high, 100);

// store the new image in tmp directory
$pth = 'tmp/myimage.jpg';
imagejpeg($dst, $pth, 100);

// free resources
imagedestroy($src);
imagedestroy($dst); 
1 голос
/ 05 января 2012

Вы можете использовать GIF Spacer (старая школа HTML да):

<img alt="" height="127" width="8" src="http://www.mydomain.com/spacer.gif" align="left" />

Spacer - это простой прозрачный пиксель 1x1, Вы даете ему необходимый размер с помощью атрибутов html, и это должно помочь.

Кстати, ваша главная проблема на самом деле в том, как вы создали свой HTML / CSS. Вот несколько замечательных источников о том, как создавать кросс-клиентские html письма: http://www.campaignmonitor.com/design-guidelines/

1 голос
/ 05 января 2012

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

Этот метод кажется немного излишним для этой простой проблемы.Плюс факт, что ваши изображения будут изменены навсегда.Если вы отправляете свою новостную рассылку тысячам людей, у которых есть css, я думаю, вы должны сначала убедиться, что все ваши клиенты могут ее правильно проверить.

Вы сказали, что не можете изменить макет, могу я спросить почему?

Теперь, чтобы ответить на ваш вопрос, вам не нужен GD, чтобы сделать это, вы можете просто сделатьСкрипт для «преобразования» ваших изображений в пакетном режиме и подготовки всех к вашей рассылке.

Например: http://www.imagemagick.org/Usage/thumbnails/#pad

два предложения

Первый

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

Второй

Сначала проверьте проблему, дизайн - это проблема, и это действительно важно, если вы хотите правильно связаться со всеми вашими подозреваемыми.Взгляните на бесплатную учетную запись mailchimp, вы можете настроить шаблон новостной рассылки и бесплатно протестировать ее, вы сможете проверить сгенерированный код.

...