原标题:
读取并计算输入文本文件中仅出现的有限字符A,G,C,T,例如500个中只有100个,并使用gd <绘制一个薄的垂直矩形条形码图像/ p>
它只读取并计算前10个字符并绘制条形码图像,而不是指定100个字符。
<?php
$file="co3.txt";
$handle=fopen($file, 'r');
$A=0;
$G=0;
$C=0;
$T=0;
$img = imagecreate(850,80);
$white = imagecolorallocate($img, 255,255,255);
$green=imagecolorallocate($img, 0, 128, 0);
$black=imagecolorallocate($img, 0, 0, 0);
$red=imagecolorallocate($img, 255, 0, 0);
$blue=imagecolorallocate($img, 0, 0, 255);
$x1=40;
$y1=40;
$x2=43;
$y2=80;
$contents = '';
#while(( ($contents=fread( $handle, 100)) !='')) {
while(( ($contents=fread($handle, 100)) )) {
for ($i=0; $i<=100; $i++)
{
if($contents[$i] == 'A')
{
$A++;
imagefilledrectangle($img, $x1, $y1, $x2, $y2, $green);
$x1 = $x1+6;
$x2 = $x2+6;
}
else
if($contents[$i] == 'G')
{
$G++;
imagefilledrectangle($img, $x1, $y1, $x2, $y2, $black);
$x1 = $x1+6;
$x2 = $x2+6;
}
else
if($contents[$i] == 'C')
{
$C++;
imagefilledrectangle($img, $x1, $y1, $x2, $y2, $blue);
$x1 = $x1+6;
$x2 = $x2+6;
}
else
if($contents[$i] == 'T')
{
$T++;
imagefilledrectangle($img, $x1, $y1, $x2, $y2, $red);
$x1 = $x1+6;
$x2 = $x2+6;
header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
}
}
}
?>
答案 0 :(得分:0)
我猜你的前10个字母不是那么多,而是直到发现T的时候。然后,产生图像的错位片段将输出此图像。循环可能会持续到100,可能会产生更多的图像(每个新的T),但在这种情况下我不知道PHP行为,因为一些HTTP响应很容易写出来......
或者您可能会看到这些图像的最后。无论如何,通过修复错位的
header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
事情应该开始看起来更像预期。