我正在尝试将形状显示到html网站。形状代表条形图。我正在尝试显示图像,但每次运行网站时都显示图像链接已损坏。
这是整个文件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>psdtoweb120715EmailSummary1195.psd</title>
<link type="text/css">
</head>
<style >
{
body, table, tr, td, p {
margin: 0;
padding: 0;
}
</style>
<body margin = "0" padding = "0">
<table width = "100%" height = "826"margin = "0" padding = "0">
<tr margin = "0" padding = "0">
<td width = "25%" margin = "0" padding = "0"> </td>
<td margin = "0" padding = "0">
<table margin = "0" padding = "0" width = "612" height = "826" background= "http://piqdev.myperformanceiq.com/brian/images/bckgrnd1.png" style="background-repeat:no-repeat;>
<tr margin = "0" padding = "0">
<td valign = "top"> <p style= "margin:0; padding-left: 20px; text-transform: uppercase;font-size: 30pt; color: #ffffff;font-family: Calibri, Georgia, Serif; font-weight: bold;" >Steve.b</p></td>
<td colspan = "2" valign = "top" align = "right" style = "padding-left:100px; padding-right: 10px"><p style= " display: relative;margin:0; padding-top: 5px;font-size: 12pt; color: #ffffff;font-family: Calibri, Georgia, Serif; font-weight: bold;"> Result summary for: <span style= "margin:0; font-size: 15pt; color: #ffffff;font-family: Calibri, Georgia, Serif; font-weight: bold;"> 8/20/15</span><br/>55 Minutes (6:00 am - 6:55am) </p></td>
</tr>
<tr margin = "0" padding = "0" height = "10%" display = "relative">
<td valign = "top" margin = "0" padding = "0" style= "margin:0; padding-bottom: 60px;font-size: 70pt; color: #ffffff;font-family: Calibri, Georgia, Serif; font-weight: bold;"><p style = "padding-left: 100px; padding-bottom: 390px; " >500 </p></td>
<td valign = "top" margin = "0" padding = "0" style= "margin:0; font-size: 40pt; color: #ffffff;font-family: Calibri, Georgia, Serif; font-weight: bold;"><p style = "padding-left: 50px; padding-top: 20px;padding-bottom: 10px;">300 <br/><div style = "padding-left: 55px;padding-top:0px; ">600 </div></td>
<td valign = "top" margin = "0" padding = "0" style= "margin:0; font-size: 40pt; color: #ffffff;font-family: Calibri, Georgia, Serif; font-weight: bold;"><p style = "padding-top: 20px; padding-left: 20px; padding-right: 42px; ">200 <br/> <div style = "padding-left: 15px; padding-top:13px; font-size:35pt;" >3/12 </div></td>
</tr>
<tr>
<td>
<?php
// Create a 200 x 200 image
$canvas = imagecreatetruecolor(200, 200);
// Allocate colors
$red = imagecolorallocate($canvas, 255, 0, 0);
$blue = imagecolorallocate($canvas, 55, 149, 255);
$green = imagecolorallocate($canvas, 5, 186, 78);
$yellow = imagecolorallocate($canvas, 219, 255, 70);
$orange= imagecolorallocate($canvas, 255, 212, 36);
// Draw three rectangles each with its own color
imageFilledRectangle($canvas, 0, 120, 40, 200, $blue);
imageFilledRectangle($canvas, 80, 200, 40, 100, $green);
imageFilledRectangle($canvas, 115, 200,81, 120, $yellow);
imageFilledRectangle($canvas, 115, 150, 155, 200, $orange);
imageFilledRectangle($canvas, 155, 160, 200, 200, $red);
// Output and free from memory
header('Content-Type: image/jpeg');
imagejpeg($canvas);
imagedestroy($canvas);
?>
<img src= "<?php echo $canvas; ?>"/>
</td>
</tr>
</table>
</td>
<td width = "25%"> </td>
</tr>
</table>
答案 0 :(得分:3)
将此代码块放在另一个文件中,调用它&#34; showimage.php&#34;。
<?php
// Create a 200 x 200 image
$canvas = imagecreatetruecolor(200, 200);
// Allocate colors
$red = imagecolorallocate($canvas, 255, 0, 0);
$blue = imagecolorallocate($canvas, 55, 149, 255);
$green = imagecolorallocate($canvas, 5, 186, 78);
$yellow = imagecolorallocate($canvas, 219, 255, 70);
$orange= imagecolorallocate($canvas, 255, 212, 36);
// Draw three rectangles each with its own color
imageFilledRectangle($canvas, 0, 120, 40, 200, $blue);
imageFilledRectangle($canvas, 80, 200, 40, 100, $green);
imageFilledRectangle($canvas, 115, 200,81, 120, $yellow);
imageFilledRectangle($canvas, 115, 150, 155, 200, $orange);
imageFilledRectangle($canvas, 155, 160, 200, 200, $red);
// Output and free from memory
header('Content-Type: image/jpeg');
imagejpeg($canvas);
imagedestroy($canvas);
?>
然后替换整个块:
<tr>
<td>
<?php
// Create a 200 x 200 image
$canvas = imagecreatetruecolor(200, 200);
// Allocate colors
$red = imagecolorallocate($canvas, 255, 0, 0);
$blue = imagecolorallocate($canvas, 55, 149, 255);
$green = imagecolorallocate($canvas, 5, 186, 78);
$yellow = imagecolorallocate($canvas, 219, 255, 70);
$orange= imagecolorallocate($canvas, 255, 212, 36);
// Draw three rectangles each with its own color
imageFilledRectangle($canvas, 0, 120, 40, 200, $blue);
imageFilledRectangle($canvas, 80, 200, 40, 100, $green);
imageFilledRectangle($canvas, 115, 200,81, 120, $yellow);
imageFilledRectangle($canvas, 115, 150, 155, 200, $orange);
imageFilledRectangle($canvas, 155, 160, 200, 200, $red);
// Output and free from memory
header('Content-Type: image/jpeg');
imagejpeg($canvas);
imagedestroy($canvas);
?>
<img src= "<?php echo $canvas; ?>"/>
</td>
</tr>
使用:(并且该文件必须为.php
扩展名)
<tr>
<td>
<img src= "showimage.php" />
</td>
</tr>
图像源需要是文件指针,而不是图像生成器代码的回声。
答案 1 :(得分:1)
虽然我更喜欢@ Fred的方法,但实际上你可以采用不同的方式。
<tr>
<td>
<?php
// Create a 200 x 200 image
$canvas = imagecreatetruecolor(200, 200);
// Allocate colors
$red = imagecolorallocate($canvas, 255, 0, 0);
$blue = imagecolorallocate($canvas, 55, 149, 255);
$green = imagecolorallocate($canvas, 5, 186, 78);
$yellow = imagecolorallocate($canvas, 219, 255, 70);
$orange= imagecolorallocate($canvas, 255, 212, 36);
// Draw three rectangles each with its own color
imageFilledRectangle($canvas, 0, 120, 40, 200, $blue);
imageFilledRectangle($canvas, 80, 200, 40, 100, $green);
imageFilledRectangle($canvas, 115, 200,81, 120, $yellow);
imageFilledRectangle($canvas, 115, 150, 155, 200, $orange);
imageFilledRectangle($canvas, 155, 160, 200, 200, $red);
ob_start();
imagejpeg($canvas);
$buffer = ob_get_clean();
imagedestroy($canvas);
?>
<img src= "<?php echo "data:image/jpeg;base64," . base64_encode($buffer); ?>"/>
</td>
</tr>
您最初的问题是您只是想将原始二进制图像数据放入<img src=...>
标记中,而您无法做到这一点。它需要是外部文件或正确编码的数据。
这实际上会将图像作为base64嵌入到页面中,从而阻止第二个HTTP请求。请注意,这会使页面下载量大得多,并且会阻止图像的缓存,因此不建议在大多数情况下使用。
正如@Dagon在评论中指出的那样,一些旧的浏览器不会支持这一点,但大多数现代浏览器都支持这种做法。