爱普生热敏打印机打印位图图像

时间:2014-10-17 15:17:23

标签: php bitmap epson

编辑: 经过一天搞乱一切之后。我的问题是sprintf。我原本以为我的循环错了。

sprintf('%02x',base_convert($binary, 2, 16));

我不得不使用s而不是x来获得正确的输出。 X正在将FF转换为00,但其他转换为罚款。这是我过去经历wbmp的循环,请注意我重新调整了图像的大小,使其/ 8,24。

$w = imagesx($im);
$h = imagesy($im);

for($x = 0; $x <= $w; $x++)
{
  $image = "";
  $cntr = 0;
  for($y = 0; $y <= $h; $y++)
  {
      $rgb = imagecolorat($im, $x, $y);
      $image .= ($rgb == "") ? 0 : $rgb; //resizing causes value to return blank

      if(strlen($image) == 8)
      {

        $imgHex = sprintf('%02s',base_convert($image, 2, 16));
        $cntr++;
        $line[$lineNum] .= $imgHex;
        if($cntr == 3)
        {
          $lineNum++;
          $cntr = 0;
        }
        $image = "";
      }
  }
  $lineNum = 0;
}

1 个答案:

答案 0 :(得分:0)

要将数字转换为字节,您可以尝试使用0xFF对其进行AND运算。这将切断一个字节范围之外的所有位。

slice |= 0xFF & ((v ? 1 : 0) << (7 - b));