2012-04-02 6 views
0

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

Затем эта страница должна быть отправлена ​​и получить QR-код от Google в формате PNG. Все идет нормально.

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

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

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

ответ

0

Просто используйте обычную версию Линукс из 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); 
+0

Я вижу, где вы и откуда, - но, конечно, чтобы сделать это, я должен иметь ImageMagick для Linux установлен на моем сервере, и Боюсь, я не могу этого потому что я нахожусь на общедоступном хостинге. Любые способы обойти это? – Alfo

+0

Обновлен мой ответ с возможным решением – Cal

+0

Вау, спасибо большое. Я проверю это, когда вернусь домой. – Alfo