在图像中添加空白并将文件保存到服务器


Add whitespace to image and save file to server

我有一个脚本,可以为时事通讯生成一些HTML。我使用"align=left"浮动图像,并将文本环绕在图像周围。我使用内联CSS样式,在本例中为右侧边距,为图像提供一些喘息的空间。Outlook忽略了这一点。Outlook也忽略了填充——我甚至尝试了10倍的边框,它也忽略了这一点。

我无法更改布局并将图像放在表格中。我正在考虑使用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免费的acounts,你可以免费设置一个时事通讯模板并测试它,你将能够检查生成的代码。

您可以使用gif间隔符(老派html耶):

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

间隔器是一个简单的1x1透明像素,您可以使用html属性为其提供所需的大小,这样就可以了。

顺便说一句,你的主要问题实际上是如何构建你的html/css。以下是一些关于如何处理跨客户html电子邮件的好资源:http://www.campaignmonitor.com/design-guidelines/