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!
Je pense que vous devez spécifier "jpeg" au lieu de "jpg" pour le format.
$image_to_convert->setFormat("jpeg");