我有两个站点(相同的服务器),其中使用ImagickDraw绘制一个简单的矩形,它在一个上工作正常,第二个失败并出现错误 -
图像" http://site_name/imagick/img?method=placeholder¶ms=258,150"无法显示,因为它包含错误。
基本上代码的作用是从网址获取method
和params
(高度和宽度)并绘制图片。
$params = explode(",", $_GET["params"]);
$width = (int) $params[0]; //258
$height = (int) $params[1]; //150
if ($method == "placeholder") { //This is true $method is set to placeholder
$image = new Imagick();
$image->newImage($width, $height, "#707070");
$image->setImageFormat("png");
$x = 0;
$y = 0;
$size = 40;
$draw = new ImagickDraw();
while ($y < $height) {
$draw->setFillColor("#808080");
$points = array(
array("x" => $x, "y" => $y),
array("x" => $x + $size, "y" => $y),
array("x" => $x + $size * 2, "y" => $y + $size),
array("x" => $x + $size * 2, "y" => $y + $size * 2),
);
$draw->polygon($points);
$points = array(
array("x" => $x, "y" => $y + $size),
array("x" => $x + $size, "y" => $y + $size * 2),
array("x" => $x, "y" => $y + $size * 2),
);
$draw->polygon($points);
$x += $size * 2;
if ($x > $width) {
$x = 0;
$y += $size * 2;
}
}
$draw->setFillColor("#B0B0B0");
$draw->setFontSize($width / 5);
$draw->setFontWeight(800);
$draw->setGravity(Imagick::GRAVITY_CENTER);
$draw->annotation(0, 0, $width . " x " . $height);
$image->drawImage($draw);
header("Content-type: image/png");
echo $image;
}
我已经在标头之前检查了缓冲区,它是空的,也尝试ob_clean()
- 仍然无法正常工作。
检查文件中的空白区域,因为我发现它影响了图像文件 - 但是没有空白区域。
任何想法在这里或者无论如何都可能出错以跟踪错误?
答案 0 :(得分:0)
确实是空白,但不是在同一个文件中(奇怪的奇怪怪异)。
使用 -
检查项目中包含的所有php文件include_once('file_name.php');
从多个文件中,有一个此类文件(包含db_name
,base url
等的设置文件)在<?php
标记之前有空格。因此,如果有人收到此错误,请确保所有php文件都是空白的。它混淆了生成的png图像。