PNG в монохромное изображение для термопринтера в PHP? - PullRequest
0 голосов
/ 03 апреля 2012

Я пытаюсь динамически генерировать QR-коды для моего термопринтера.Чтобы сделать это, я должен отправить запрос на свой сервер (скажем, что-то вроде http://domain.example.com/qr?url=).

. Затем эта страница должна пойти и получить QR-код от Google в формате PNG. Пока все хорошо.

Но теперь сложная часть. Как только я это сделаю, мне нужно преобразовать это во что-то вроде этого .

Я ранее нашел этого вопрос, но, в отличие от него, мне нужно сделать это в Интернете. У меня нет доступа к установке модулей PHP на сервере, и поэтому, насколько мне известно, лучший вариант для меня это phMagik , но опять же проблема в том, что, насколько мне известно, это не поддерживает дополнительные параметры, которые можно вводить в обычную версию ImageMagik для Linux или Windows, как подробно описано на этой странице документации .

Так кто-нибудь знает, как я могу обойти эту проблему? В долгосрочной перспективе я надеюсь сделать свою собственную версию Little Printer . Спасибо.

1 Ответ

0 голосов
/ 03 апреля 2012

Просто используйте обычную Linux-версию ImageMagick - назовите ее, используя exec()

Если у вас нет доступа для установки чего-либо на вашем сервере, то это будет немного сложнее.Если у вас установлен GD (вы, вероятно, делаете это), вы можете использовать http://php.net/imagecreatefrompng, чтобы получить данные пикселей.Затем вы можете вручную создать то, что вам нужно, что-то вроде этого:

$file = "/path/to/png.png"; 
$image = ImageCreateFromPng($file); 
list($w, $h) = GetImageSize($file); 

$pixels = array();
for ($x=0; $x<$w; $x++){
for ($y=0; $y<$h; $y++){
    $rgb = ImageColorAt($image, $x, $y); 
    $r = ($rgb >> 16) & 0xFF;
    $g = ($rgb >> 8) & 0xFF;
    $b = $rgb & 0xFF;
    $pixels = '0x'.sprintf('%02x', ($r+$g+$b)/3); # store the average of r/g/b
}
}

echo "static unsigned char __attribute__ ((progmem)) adalogo [] = {\n";
echo implode(', ', $pixels);
echo "};\n";

Сначала вам нужно получить фактический PNG - вы можете получить его через URL, если у вас включены обертки файлов:

$file = "http://url.com/to/png.png"; 
$image = ImageCreateFromPng($file); 

Или используйте PHP в командной строке, чтобы получить изображение:

$file = "/path/to/png.png"; 
exec("php /path/to/script.php > $file");
$image = ImageCreateFromPng($file); 
...