URLを介して渡されたパラメーターを使用して、任意のテキストのPNG画像を生成する単純なサービスがあります。パラメータの1つはテキスト自体であり、残りは「フォント」、「色」、「フォントの太さ」などです。
このようなURLの例は次のとおりです。http: //picselbocs.com/projects/cakemyface/text.php?params = Verdana%7C18%7Cbold%7Cnormal%7Ccenter%7C%23cc0000%7Cunderline&text = Hello%20world!
次のPNGを生成します。
別のスクリプトでは、cURLを使用してこのサービスによって生成されたリソースを取得し、それを使用して画像に変換します。これは、imagecreatefromstring()
回転やスケーリングなどの操作が必要なためです。次に、他のリソースとマージします。画像。このために、私は次のコードを使用します:
function getImage($url){
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$resource = curl_exec($ch);
curl_close ($ch);
return $resource;
}
$url = "http://picselbocs.com/projects/cakemyface/text.php?params=Verdana%7C18%7Cbold%7Cnormal%7Ccenter%7C%23cc0000%7Cunderline&text=Hello%20world!";
$string = getImage($url);
$image = imagecreatefromstring($string);
// Send the image to the client
header("Content-type: image/png");
header("Content-disposition: inline; filename=mytext.png");
imagepng($image);
imagedestroy($image);
これと同じコードがここにあり、出力を確認できます。問題は、上記のコードが、次の例のように、すべての文字が長方形で埋められた奇妙なPNGを出力することです。
なぜこれが発生し、どうすれば解決できますか?
もう1つの興味深い点は、テキスト画像へのURLを、たとえば、Google Chartsツールで生成されたQRコード(QRコードなど)へのリンクに置き換えると、結果は本来あるべきものになるということです...