7

有没有办法将图像转换为图像的html等价物,通过将html表格分成许多单元格,每个单元格都有特定的背景颜色,就像图像中的像素一样?很像 ASCII 艺术。

我认为这是在电子邮件签名中添加公司徽标的一种方式,而不必担心电子邮件客户端会阻止图像。

4

7 回答 7

7

是的,很多人都这样做了:http: //pgl.yoyo.org/img2html/就是一个例子。

于 2012-05-25T08:11:34.807 回答
5

也许您需要的只是将图像转换为 URI 格式。

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">

http://jsfiddle.net/z6FFc/

于 2012-05-25T08:13:54.803 回答
1

试试 STYLECampaign 中的“用于电子邮件的图像到 HTML 转换器”。如果我没记错的话,您将获得一个下载链接,以换取您在 stylecampaign.com 上订阅他们的时事通讯。该工具工作正常,具有缩放和压缩功能;这是一篇博客文章http://bit.ly/Jhf1CK和一个解释技巧和缺点的视频指南:http ://www.youtube.com/watch?v=VSi51yLQFnc

于 2012-05-25T10:31:19.497 回答
0

我会告诫不要尝试这种把戏。

使用电子邮件做“聪明”事情的一个简单规则是首先询问“垃圾邮件发送者是否使用相同的技术?”。如果答案是肯定的,您可以确定 ISP 正在使用他们的过滤器来处理包含它的垃圾邮件。

在诱骗图像显示的情况下,无论是使用 base64 技巧还是 pixeldiv,这些技术已被垃圾邮件发送者使用多年,可能会损害您的发送声誉。

如果有问题的公司与收件人有良好的联系,他们会很乐意展示图片。一旦您回复或添加到联系人,许多客户端(如 gmail)将启用图像。此外,使用 DKIM 等技术签署您的标头、使用信誉良好的第三方发件人或支付 ReturnPath 认证费用可以提高您的声誉,从而足以覆盖大多数主要 ISP 的图像屏蔽。

于 2012-05-25T20:40:26.880 回答
0

Tom Walsh,是什么让您认为阻止图像的总是 ISP?电子邮件客户端呢?默认情况下,80% 的电子邮件都屏蔽了图像。依靠用户的努力或知识来更改这些设置是一个坏主意。

使用某些服务,例如 Mailchimp,每次发送时都会为您提供一个新的电子邮件地址,因此,您无法添加为安全发件人。上述技术是获取电子邮件列表的好方法,该列表已经双重选择加入,以接收您的电子邮件的半图片版本,以吸引他们下载图像。

该顶部链接有效。我使用的是 JPG,我不确定它接受什么格式。正如你所知,这使得文件比普通的 JPG 大一点。考虑是否值得将其用于更大的图像,但对于电子邮件签名,我认为这是一个不错的用途。我注意到,有时当您回复时,签名会中断......所以......请注意,您最终可能会收到大量<tr><td>A</td></tr>

最后警告......如果您的电子邮件签名确实中断并以代码形式结束......请注意顶部链接的默认设置是“arse”因此......一些客户可能会觉得这很冒犯。也许将其更改为您的公司名称。请记住,为这个表格图像创建一个链接将 (a) 花费一些时间,并且 (b) 第二次主要使这个代码膨胀。

于 2012-11-09T17:25:06.007 回答
0

终于在PHP、CSS和HTML中完成了一个函数
最终这个方法应该被认为是Jpeg和Png到Div的转换。

实现这一点的方法包括制作一个 html 元素网格,为每个值设置 RGB 背景颜色。

希望它对来到这里的人有所帮助,我第一次来到这里,只发现了 Base64 转换,与原始 HTML 和 CSS 完全不同。

    <?php

// Convert Images to RAW HTML for Bypassing Email Protection, Project by Woke World 2021
// image2div($imagePath, $type, $scale);


echo image2div("test.png","png", 5);


// Custom Function by Woke World @ GitHub
function image2div($imagePath, $type, $scale)
{
if ($type == "png")
{
$resource = imagecreatefrompng('test.png');
}
else
{
$resource = imagecreatefromjpeg('test.jpg');
}
$width = imagesx($resource);
$height = imagesy($resource);
$html_start_1 = '
<html>
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
</head>
<body>
<div style="display: grid;';
$cols = 'grid-template-columns: ';
$widths = 1;
while($widths <= $width)
{
   $cols .= "1fr ";
   $widths++;
}
$cols .= "; ";
$rows = 'grid-template-rows: ';
$heights = 1;
while($heights <= $height)
{
   $rows .= "1fr ";
   $heights++;
}
$rows .= "; ";
$html_start_2 = '
  grid-gap: 0px;
  padding: 0px;
  border:0px;
  height: '.$height*$scale.'px;
  width:'.$width*$scale.'px;
  ">';
$blocks = '';
$html_end = '
</div></body></html>';

for($y = 0; $y < $height; $y++) {
  for($x = 0; $x < $width; $x++) {
        $color = imagecolorat($resource, $x, $y);
        $color_rgb = imagecolorsforindex($resource, $color);
        $red = $color_rgb["red"];
        $green = $color_rgb["green"];
        $blue = $color_rgb["blue"];
        $alpha = $color_rgb["alpha"];
        $blocks .= '<div style="background-color: rgb('.$red.','.$green.','.$blue.'); margin:-1px;"></div>';

    }
}

$build = $html_start_1.$cols.$rows.$html_start_2.$blocks.$html_end;
return $build;
}
?>
于 2021-03-14T09:41:34.673 回答
-1

尝试转换为 html/css。它比 base64 更紧凑,虽然我还没有尝试过,但它应该可以工作。它使用 css 来创建图像,而不需要任何外部的东西。不要注意顶部,那是完成所有工作的代码所在的地方。注意底部。https://codepen.io/blazeeboy/pen/bCaLE

no code. just something I have to do to get the post online.
于 2015-12-20T23:42:58.173 回答