代码之家  ›  专栏  ›  技术社区  ›  Rosamunda

使用PHP ImageCreateFromJPEG()不允许我重新创建图像:它只生成一次图像,并保存在服务器缓存中,无论

  •  -1
  • Rosamunda  · 技术社区  · 5 年前

    我的问题是,在创建映像之后,即使我从服务器中删除它并删除缓存,映像仍然存在。

    即使我改变了图片里面的文字,也不会有任何改变。我试过使用不同的浏览器(以防浏览器缓存出现问题),但问题仍然存在。

    这是生成图像的代码:

    function demo($userID, $cursoID, $fechaAprobacion) {
    
    $x = $conectar->prepare("
      SELECT fechaEmisionCertificado, cursosUsuarios.userID, userNombres, tipoCertificado, campoExtraCertificado, userDNI,
          nombreCurso
      FROM cursosUsuarios
      JOIN usuarios
      ON cursosUsuarios.userID = usuarios.userID
      JOIN cursos 
      ON cursosUsuarios.cursoID = cursos.cursoID
      WHERE cursosUsuarios.userID = ?
      AND cursosUsuarios.cursoID = ?
      ");
    $x->bindParam(1, $userID);
    $x->bindParam(2, $cursoID);
    $x->execute();
    $y = $x->fetch(PDO::FETCH_ASSOC);
    
    $tipoCertificado = $y['tipoCertificado'];
    $campoExtraCertificado = $y['campoExtraCertificado'];
    $nombreCompleto = strtolower($y['userNombres']);
    $nombreCurso = $y['nombreCurso'];
    
    $fechaNumeros = $y['fechaEmisionCertificado'];
    
    $guardarImagen = '/userID'.$userID.'-cursoID'.$cursoID.'.jpg';
    
    $mesyAnoEmision = $mesEmision.' de '.$anoEmision.'.';
    
    //Now we print the certificate, according to the certificate type $tipoCertificado
    
        if ($tipoCertificado == 4) { //taller online
          $imagen = ImageCreateFromJPEG('certificado-taller-online-2018.jpg');
          //Color de fondo de la imagen
          $color = imagecolorallocate($imagen, 0, 0, 0);  
          //cargamos las fuentes ttf
          $f = '/mtcorsiva.ttf';
          $f2 = '/JosefinSans-BoldItalic.ttf';
    
          //tomamos la data y la incrustamos
          // horizontal / vertical
          imagettftext($imagen, 140, 0, 850, 733, $color, $f, $nombreCompleto);
          imagettftext($imagen, 80, 0, 1555, 879, $color, $f, $nombreCurso);
          imagettftext($imagen, 90, 0, 1590, 1218, $color, $f, $fechaAprobacion);
          imagettftext($imagen, 90, 0, 980, 1805, $color, $f, $diaEmision);
          imagettftext($imagen, 90, 0, 1879, 1805, $color, $f, $mesyAnoEmision);
          imagettftext($imagen, 40, 0, 3122, 2314, $color, $f2, $userID);
          //Header y output
          header('Content-type: image/jpeg');
          //guardamos la imagen como archivo
          imagejpeg($imagen,$guardarImagen,100);
          //mostramos la imagen
          imagejpeg($imagen,NULL,100);
          imagedestroy($imagen);    
        }
    
    }
    
    
    demo($userID, 1, 'December 19th');
    
    1 回复  |  直到 5 年前
        1
  •  0
  •   Rosamunda    5 年前

    万一有一天能帮上忙,我发现了问题:

    所以我应该先设置他们的权限,然后再显示出来:

    chmod($imagen, 0777);
    imagejpeg($imagen,NULL,100);