【问题标题】:epson thermal printer printing bitmap image爱普生热敏打印机打印位图图像
【发布时间】:2014-12-13 05:22:31
【问题描述】:

编辑: 因此,在搞砸了一天之后。我的问题是 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;
}

【问题讨论】:

  • 01001001 是 73 的二进制。如果发送 73 会发生什么?
  • 我已经澄清了我想要做什么的问题。我的例子很糟糕。

标签: php bitmap epson


【解决方案1】:

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

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

【讨论】:

  • 谢谢,我认为这实际上完成了我最初的问题,我只是误解了代码。我不知道规则是什么,但如果需要,我可以给你答案,因为你确实回答了我的问题。我只是没有提出正确的问题。
  • 没关系,我不需要积分。最好尝试改进问题以使其更有意义
猜你喜欢
  • 2016-05-06
  • 2015-10-25
  • 1970-01-01
  • 2020-10-08
  • 2023-03-09
  • 2021-09-12
  • 2016-03-25
  • 2016-11-10
  • 2013-10-19
相关资源
最近更新 更多