2012-04-02 62 views
0

我正試圖爲我的熱敏打印機動態生成QR碼。爲了做到這一點,我必須發送一個請求到我的服務器(例如http://domain.example.com/qr?url=)。PNG到單色位圖的熱打印機在PHP?

此頁面應該去谷歌PNG格式的QR碼。到現在爲止還挺好。

但現在是困難的部分。一旦我這樣做了,我需要將它轉換爲沿着this的行。

我以前發現this的問題,但是,不像他,我需要在網上做到這一點。我無法在服務器上安裝PHP模塊,因此,據我所知,最好的選擇是phMagik,但問題是,據我所知,這不支持額外的參數可以輸入正常的Linux或Windows版本的ImageMagik,詳見this documentation page

那麼有人知道我怎麼能解決這個問題嗎?從長遠來看,我希望能夠製作我自己的Little Printer版本。謝謝。

回答

0

只需使用ImageMagick的正常Linux版本 - 使用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 2012-04-03 15:46:14

+0

用可能的解決方案更新了我的答案 – Cal 2012-04-03 17:15:24

+0

哇,非常感謝。當我回家時我會測試這個。 – Alfo 2012-04-04 15:57:51

相關問題