Добавить пробел для изображения и сохранить файл на сервер

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

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

У меня есть нулевой опыт работы с 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;"/> 

Вы можете определенно полагаться на 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); 

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

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

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

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

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

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

Первый

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

второй

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

Вы можете использовать gif spacer (old school html yeah):

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

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

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