2017-07-06 226 views
1

我在做这在用户填写创建邮件签名形式:如何正确使用imagettftext?

generatarjeta.php

if(isset($_GET["suc"]) && $_GET["suc"] !="") 
{ $code=""; 
    foreach($_GET as $key => $value){ 
    $code.= $key . "=" . $value . "&"; 
    } 
    $code = rtrim($code,"&"); 
    ?> 
    <img src="imagem.php?<?php echo $code;?>"> 
    <script>window.history.pushState("", "", '/generatarjeta.php');</script> 
    <?php exit(); 
} 

<form method="get"> 
     <table> 
     <tr><td><label>Sucursal</label></td><td><select name="suc"> 
      <option value="">Seleccione...</option> 
      <?php 
      $con_sucursal = mssql_query("select * from localitos where local NOT IN (3,5, 7,12, 13, 14,15,16,17,19, 20, 21, 22,23,24,25,26,27)"); 
      while ($res_sucursal = mssql_fetch_array($con_sucursal)) 
      { 
      echo "<option value='$res_sucursal[0]'>$res_sucursal[1]</option>"; 
      }?> 
     </select></td></tr> 
     <tr><td><label>Nombre del Trabajador: </label></td><td><input type="text" name="nombre" required="" onkeypress="return textonly(event);"/></td></tr> 
     <tr><td><label>Puesto: </label></td><td><input type="text" name="puesto" required="" onkeypress="return textonly(event);"/></td></tr> 
     <tr><td><label>Telefono: </label></td><td><input type="text" name="tel" required="" onkeypress='return solonums(event)'/>&nbsp;<label>Extension: </label><input type="text" name="ext" onkeypress='return solonums(event)'/></td></tr> 
     <tr><td><label>correo: </label></td><td><input type="text" name="mail" placeholder="nombre.apellido"/></td></tr> 
     <tr><td><input type="submit" name="submit" value="Generar"/></td><td><input type="reset"/></td></tr> 
     </table> 
    </form> 

imagem.php

//Carregar imagem 
$rImg = ImageCreateFromJPEG("the_firma.jpg"); 
//Definir cor 
$cor = imagecolorallocate($rImg, 226, 41, 34); 
$cor2 = imagecolorallocate($rImg, 60, 60, 59); 

$tel = "$_GET[tel] Ext. $_GET[ext]"; 
$correo = "$_GET[mail]@mail.x"; 
//Escrever nome 
imagettftext($rImg,14,0,850,60,$cor,'Open Sans',$_GET["nombre"]); 
//imagestring($rImg,5,850,60,urldecode($_GET["nombre"]),$cor); 
//imagestring($rImg,5,850,80,urldecode($_GET["puesto"]),$cor2); 
//imagestring($rImg,5,800,120,urldecode($tel),$cor2); 
//imagestring($rImg,5,800,140,urldecode($correo),$cor2); 
//Header e output 
header('Content-type: image/jpeg'); 
imagejpeg($rImg,NULL,100); 

我的问题是,当我使用和imagestring ,一切工作正常,但我需要使用Open Sans ttf,所以我试图使用imagettftext,但它加载img src时,“回声”一个空的结果或错误,也单独测试文件时,它不显示任何错误。

有什么建议吗?

UPDATE:

$tel = "$_GET[tel] Ext. $_GET[ext]"; 
$correo = "$_GET[mail]@mail.mx"; 
$puesto = strtoupper($_GET["puesto"]); 


imagettftext($rImg, 14, 0, 780,60, $cor, 'OpenSans-Bold.ttf', $_GET['nombre']); (WORKS) 
imagettftext($rImg, 8, 0, 780,80, $cor2, 'OpenSans-Regular.ttf', $puesto); (WORKS) 
imagettftext($rImg,9,780,135,$cor2, 'OpenSans-Regular.ttf',urldecode($_GET["tel"])); (CRASHES) 
imagettftext($rImg,9,780,172,$cor2,'OpenSans-Regular.ttf',$correo);(CRASHES) 
imagettftext($rImg,8,780,209,$cor2,'OpenSans-Regular.ttf',$_GET["direccion"]);(CRASHES) 
imagettftext($rImg,8,780,223,$cor2,'OpenSans-Regular.ttf',$_GET["dir2"]);(CRASHES) 
+0

它看起来正确的给我。你确定你的变量是正确的吗?你有没有尝试过var_dump(urldecode($ correo));? – Andreas

+0

$ correo与imagestring无法正常工作,而不是imagettftext – Rhopercy

回答

0

由于documented$fontfile参数需要的字体文件路径,而不是它的显示名称:

您想要的TrueType字体的路径使用。

最简单的办法是将.TTF文件(opensans.ttf?)在同一文件夹作为您的脚本,然后改变你的函数调用就像这样:

imagettftext($rImg, 14, 0, 850, 60, $cor, 'opensans.ttf', $_GET['nombre']); 
+0

那么ttf的名称应该是open_sans.ttf? – Rhopercy

+1

我不知道你有什么文件的名称是。你需要自己检查一下。在我的系统上,常规字体是“OpenSans-Regular.ttf”。 – timclutton

+0

它的确如你所说的那样工作,但是当我用数字发送一个参数时它崩溃也许是我的sintax我将用你的代码的一部分编辑 – Rhopercy