2014-10-17 5 views
0

Редактировать: Итак, после дня беспорядка со всем. Моя проблема была с sprintf. Я изначально думал, что моя петля ошибалась.epson термальный принтер печатает растровое изображение

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

мне пришлось использовать с вместо й, чтобы получить надлежащий выход. 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; 
} 
+0

01001001 является двоичным кодом для 73. Что произойдет, если вы отправите 73? –

+0

Я уточнил свой вопрос относительно того, что я пытаюсь сделать. Плохой пример с моей стороны. – user3320185

ответ

0

Чтобы преобразовать число байт, вы можете попробовать и-ки его с 0xFF. Это отключит все биты за пределами однобайтового диапазона.

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

Спасибо, я думаю, что на самом деле сделал то, что задал мой оригинальный вопрос, я просто неправильно понял код. Я не знаю, что такое правила, но я могу дать вам ответ, если это необходимо, так как вы действительно ответили на мой вопрос. Я просто не смог задать правильный вопрос. – user3320185

+0

его нормально, мне не нужны очки. Лучше попытайтесь улучшить вопрос, чтобы лучше понять – MightyPork