Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将空白添加到图像并将文件保存到服务器_Php_Image Processing_Gd - Fatal编程技术网

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

Php 将空白添加到图像并将文件保存到服务器,php,image-processing,gd,Php,Image Processing,Gd,我有一个脚本,可以为时事通讯生成一些HTML。我使用“align=left”浮动一个图像,并在其周围环绕文本。我使用内联CSS样式,在本例中为右边空白,给图像一些喘息的空间。Outlook忽略了这一点。Outlook也忽略了填充-我甚至尝试了10px的边框,它也忽略了这一点 我无法更改布局并将图像放入表格中。我正在考虑使用GD来处理图像,在图像右侧添加8px的空白。问题是,由于这是一份面向数千人的时事通讯,因此我需要将修改后的图像保存到服务器的某个位置,以便链接到它。我不想在运行中生成这个 我没

我有一个脚本,可以为时事通讯生成一些HTML。我使用“align=left”浮动一个图像,并在其周围环绕文本。我使用内联CSS样式,在本例中为右边空白,给图像一些喘息的空间。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;"/>
“align=“left”style=“margin:8px 8px 0;"/>

你应该首先避免使用css作为时事通讯,因为你不能依赖它,除非你制作的是纯文本版本

对于这个简单的问题,这种方法似乎有点过头了。再加上你的图像将永远被修改的事实。如果你将你的新闻稿发送给数千人,其中包含css,我认为你应该首先确保你的客户都能够正确地检查它

你说你不能改变布局,我能问一下为什么吗

现在,为了回答您的问题,您不需要GD来做这件事,您只需制作一个脚本来成批“转换”您的图像,并将它们准备好用于您的新闻稿

例如:

两条建议

首先

试着在你的时事通讯中使用表格而不是css,你将能够在表格中有效地填充表格


首先检查问题,设计是一个问题,如果你想正确访问你的所有用户,这一点非常重要。看看mailchimp免费帐户,你可以设置一个新闻稿模板并免费测试,你将能够检查生成的代码。

你应该首先避免使用css作为新闻稿,因为你不能重复除非你制作了一个纯文本版本,否则不要在它上面添加任何内容

对于这个简单的问题,这种方法似乎有点过头了。再加上你的图像将永远被修改的事实。如果你将你的新闻稿发送给数千人,其中包含css,我认为你应该首先确保你的客户都能够正确地检查它

你说你不能改变布局,我能问一下为什么吗

现在,为了回答您的问题,您不需要GD来做这件事,您只需制作一个脚本来成批“转换”您的图像,并将它们准备好用于您的新闻稿

例如:

两条建议

首先

试着在你的时事通讯中使用表格而不是css,你将能够在表格中有效地填充表格

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

您可以使用gif间隔符(老式html是的):


间隔是一个简单的1x1透明像素, 您可以使用html属性为它提供所需的大小,这应该可以实现

顺便说一句,您的主要问题实际上是如何构建html/css。以下是一些关于如何处理跨客户端html电子邮件的优秀资源:

您可以使用gif间隔(老式html是的):


间隔是一个简单的1x1透明像素, 您可以使用html属性为它提供所需的大小,这应该可以实现


顺便说一句,你的主要问题实际上是如何构建你的html/css。以下是一些关于如何处理跨客户端html电子邮件的优秀资源:

你当然可以依靠css来制作新闻稿-仅限于某些属性和内联。我们开展了一系列非常成功的活动,新闻稿对每个人都很合适

我们的web服务器上有一个文件夹,其中有几千个小的修改过的图像,这不是问题

我们不能改变布局,因为这是一些重要人物想要的——而重要人物付给我一笔可观的钱来实现他们的愿望。是的,我可能会对此大发雷霆,并可能说服他们,但如果我可以反过来花几个小时让它工作,为什么不呢

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来制作新闻稿——只是某些属性而已,而且是内联的。我们开展了一系列非常成功的活动,新闻稿对每个人来说都很不错

我们的web服务器上有一个文件夹,其中有几千个小的修改过的图像,这不是问题

我们不能改变布局,因为这是一些重要人物想要的——而重要人物付给我一笔可观的钱来实现他们的愿望。是的,我可能会对此大发雷霆,并可能说服他们,但如果我可以反过来花几个小时让它工作,为什么不呢

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); 

非基于web的邮件客户端的行为与web页面的行为不完全相同,也不一定符合web标准,尤其是Outlook;您必须采取更具体的方法来处理此类兼容性。我绝对肯定,在图像本身填充空格不是正确的解决方案对于你的问题。为什么不问一个html/css问题“我如何让它在outlook中看起来正确”?非基于web的邮件