Maison  >  Questions et réponses  >  le corps du texte

Convertir .HEIC en .JPG en utilisant ImageMagick en PHP

J'espère essayer de créer un petit convertisseur d'image qui convertit les fichiers HEIC téléchargés dans un document Web php en .JPG (ou tout autre format de fichier courant).

J'utilise PHP sur un serveur Unix et ImageMagick est installé sur le serveur. Le code de ligne de commande suivant s'exécute sur le serveur :

mogrify -format jpg *.HEIC

Je souhaite convertir ce code de ligne de commande en PHP.

Comme mentionné précédemment, j'aime convertir le code de formatage de ligne de commande en PHP. J'ai actuellement le code suivant configuré dans un formulaire HTML + PHP de base. Le fichier en cours de conversion vient d'être téléchargé et ne se trouve pas sur le serveur. Si nécessaire, je peux d'abord télécharger sur le serveur, puis lire le fichier du serveur.

if($_SERVER["REQUEST_METHOD"] == "POST")
{
    if(empty($_FILES['image_url']['name']))
    {
        echo "No File uploaded";
    }
    else{

        $uploadedImage = fopen($_FILES['image_url']['tmp_name'], 'rb');

        $image_to_convert = new Imagick();
        $image_to_convert->readImageFile($uploadedImage);
        $image_to_convert->setFormat("jpg");

        $image_to_convert->setFileName('test.jpg');

        header('Content-Type: image/jpg');
        header('Content-disposition: attachment; filename='.$image_to_convert->getFileName());
        header("Content-Description: File Transfer"); 

        readfile($image_to_convert);
    }
}

Ce code télécharge le fichier "test.jpg", mais lorsque j'essaie de l'ouvrir dans Windows Image Viewer, il affiche le message "Nous ne semblons pas prendre en charge ce format de fichier". Je suis relativement nouveau sur PHP, donc je ne connais pas toutes les astuces des flux de sortie/entrée, donc si mon code est mauvais, faites-le moi savoir.

Toute aide est la bienvenue. Merci!

P粉322918729P粉322918729373 Il y a quelques jours818

répondre à tous(1)je répondrai

  • P粉667649253

    P粉6676492532023-11-03 09:57:29

    Je pense que vous devez spécifier "jpeg" au lieu de "jpg" pour le format.

    $image_to_convert->setFormat("jpeg");

    répondre
    0
  • Annulerrépondre