我正在尝试为我的热敏打印机动态生成QR码。为此,我必须向我的服务器发送请求(比如http://domain.example.com/qr?url=)。
然后,此页面应以PNG格式从Google获取二维码。到目前为止一切都很好。
但现在困难的部分。完成后,我需要将其转换为this的行。
我之前发现this问题,但是,与他不同,我需要在网上进行。我没有权限在服务器上安装PHP模块,所以对我来说最好的选择是phMagik,但问题是我知道这不支持可以提供给正常Linux或Windows版本ImageMagik的额外参数,详见this documentation page。
所以有人知道如何解决这个问题吗?从长远来看,我希望自己制作Little Printer版本。感谢。
答案 0 :(得分:0)
只需使用正常的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);