2011-05-16 32 views
2

我想要動態地呈現文本的圖像與自定義字體自定義字體的文本,優選與選項輸出直接保存到文件。並以根據字體/尺寸組合自動設置圖像尺寸。繪製與使用ImageMagick和PHP

我已經可以用GD做到這一點,但它不處理字符相互重疊的字體。

所以現在我正在尋找ImageMagick。我發現an example in the docs似乎做我想要的。這可能與php_magick?特別是沒有定義圖像大小的部分:)如果不是,我可以讓命令行magick輸出原始圖像,所以我可以直接將它傳遞給客戶端使用PHP?

謝謝!


真正的問題可能是:如何將下面的IM命令轉換爲使用php_magick的PHP代碼?

convert -background lightblue -fill blue -font Arial -pointsize 72 label:Anthony 
+0

找到了如何讓im返回原始圖像數據:'convert [..] png:-' – Znarkus 2011-05-16 19:12:26

回答

3

決定跳過API和使用命令行界面來代替。

convert -background lightblue -fill blue -font Arial -pointsize 72 label:Anthony png:- 

這將返回原始PNG數據,然後我們可以將其輸出到瀏覽器。取而代之的是將png:-替換爲文件名以保存到文件中。

如果您在此處使用用戶輸入作爲參數,請不要忘記使用escapeshellarg

8

您應該能夠使用Imagick類的annotateImage功能來複制該功能。

這裏有一個直上覆制粘貼從that documentation

<?php 
/* Create some objects */ 
$image = new Imagick(); 
$draw = new ImagickDraw(); 
$pixel = new ImagickPixel('gray'); 

/* New image */ 
$image->newImage(800, 75, $pixel); 

/* Black text */ 
$draw->setFillColor('black'); 

/* Font properties */ 
$draw->setFont('Bookman-DemiItalic'); 
$draw->setFontSize(30); 

/* Create text */ 
$image->annotateImage($draw, 10, 45, 0, 
    'The quick brown fox jumps over the lazy dog'); 

/* Give image a format */ 
$image->setImageFormat('png'); 

/* Output the image with headers */ 
header('Content-type: image/png'); 
echo $image; 
+1

感謝您的回答,但不會將圖像大小設置爲800x75?我需要將尺寸自動調整爲字體大小 – Znarkus 2011-05-17 07:44:26