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

时间:2012-01-05 10:46:25

标签: php image-processing gd

我有一个脚本可以为简报生成一些HTML。我使用" align = left"浮动图像并在其周围包装文字。我使用内联CSS样式,在这种情况下是margin-right,为图像提供一些喘息空间。 Outlook忽略了这一点。 Outlook也忽略了填充 - 我甚至尝试了10px的右边界,它也忽略了这一点。

我无法更改布局并将图像放入表格中。我正在考虑使用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;"/>

3 个答案:

答案 0 :(得分:3)

你当然可以依靠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 :(得分:1)

你应该首先避免使用css作为简报,因为你不能依赖它,除非你制作了纯文本版本。

对于这个简单的问题,这种方法似乎有些过分。事实上,您的图像将永远被修改。如果您将简报发送给数千名拥有css的人,我认为您应首先确保您的客户能够正确检查它。

你说你不能改变布局,我可以问为什么?

现在,为了回答你的问题,你不需要GD来做这个,你可以简单地制作一个脚本来批量“转换”你的图像,让它们都准备好你的时事通讯。

例如:http://www.imagemagick.org/Usage/thumbnails/#pad

两项建议

<强>第一

尝试在简报中使用表格而不是css,您将能够有效地填充表格中的表格。

<强>第二

首先检查问题,设计是一个问题,如果您想要正确找到所有的嫌疑人,这一点非常重要。看看mailchimp免费账号,您可以设置所有新闻稿模板并免费测试,您将能够检查生成的代码。

答案 2 :(得分:1)

你可以使用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/