ImagickDraw Rectangle - 图像无法显示错误

时间:2017-07-07 11:45:52

标签: php imagemagick imagick

我有两个站点(相同的服务器),其中使用ImagickDraw绘制一个简单的矩形,它在一个上工作正常,第二个失败并出现错误 -

  

图像" http://site_name/imagick/img?method=placeholder&params=258,150"无法显示,因为它包含错误。

基本上代码的作用是从网址获取methodparams(高度和宽度)并绘制图片。

$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() - 仍然无法正常工作。

检查文件中的空白区域,因为我发现它影响了图像文件 - 但是没有空白区域。

任何想法在这里或者无论如何都可能出错以跟踪错误?

1 个答案:

答案 0 :(得分:0)

确实是空白,但不是在同一个文件中(奇怪的奇怪怪异)。

使用 -

检查项目中包含的所有php文件
include_once('file_name.php');

从多个文件中,有一个此类文件(包含db_namebase url等的设置文件)在<?php标记之前有空格。因此,如果有人收到此错误,请确保所有php文件都是空白的。它混淆了生成的png图像。