2012-04-02 16 views
0

Ich versuche dynamisch QR-Codes für meinen Thermodrucker zu generieren. Um dies zu tun, muss ich eine Anfrage an meinen Server senden (etwa http://domain.example.com/qr?url=).PNG zu monochrome Bitmap für Thermodrucker in PHP?

Diese Seite sollte dann gehen und einen QR-Code von Google im PNG-Format bekommen. So weit, ist es gut.

Aber jetzt der schwierige Teil. Sobald ich das getan habe, muss ich es zu etwas in der Art von this konvertieren.

Ich habe zuvor this Frage gefunden, aber, im Gegensatz zu ihm, muss ich es im Internet tun. Ich habe keinen Zugang zur Installation von PHP-Modulen auf dem Server, und so ist die beste Option für mich, soweit ich weiß, phMagik, aber das Problem ist auch, dass das, soweit ich weiß, die zusätzlichen Parameter nicht unterstützt kann in die normale Linux- oder Windows-Version von ImageMagik eingegeben werden, wie unter this documentation page beschrieben.

Also weiß jemand, wie ich dieses Problem umgehen könnte? Auf lange Sicht hoffe ich, meine eigene Version des Little Printer zu machen. Vielen Dank.

Antwort

0

Verwenden Sie einfach die normale Linux-Version von ImageMagick - nennen es exec()

mit der Wenn Sie keinen Zugang haben, um die Dinge auf Ihrem Server zu installieren, dann ein wenig komplizierter zu bekommen, es wird. Wenn Sie GD installiert haben (Sie wahrscheinlich tun), können Sie http://php.net/imagecreatefrompng verwenden, um die Pixeldaten zu erhalten. Sie können dann manuell erstellen, das Ding Sie suchen, so etwas wie dieses:

$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"; 

Sie müssen zuerst die tatsächliche PNG bekommen - entweder man es über die URL holen könnte, wenn Sie Datei-Wrapper aktiviert haben:

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

Oder nutzen Sie PHP auf der Kommandozeile zunächst der Greifer das Bild:

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

ich sehe, wo du herkommst - aber sicher das ich ImageMagick für Linux zu tun haben, auf meinem Server installiert haben, und Ich fürchte, das kann ich nicht weil ich auf einem Shared-Hosting-Dienst bin. Irgendwelche Möglichkeiten dazu? – Alfo

+0

Meine Antwort mit einer möglichen Lösung aktualisiert – Cal

+0

Wow, vielen Dank. Ich werde das testen, wenn ich nach Hause komme. – Alfo