首頁  >  問答  >  主體

在 PHP 中使用 ImageMagick 將 .HEIC 轉換為 .JPG

我希望嘗試建立一個小型影像轉換器,將上傳到 php Web 文件的 HEIC 檔案轉換為 .JPG(或任何其他通用檔案格式)。

我正在 unix 伺服器上運行 PHP,並在伺服器上安裝了 ImageMagick。以下命令列程式碼在伺服器上運行:

mogrify -format jpg *.HEIC

我想將此命令列程式碼轉換為 PHP。

如前所述,我喜歡將命令列格式化程式碼轉換為 PHP。我目前在基本的 HTML PHP 表單中設定了以下程式碼。正在轉換的檔案是新上傳的並且不在伺服器上。如果有必要,我可以先上傳到伺服器,然後從伺服器檔案中讀取。

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);
    }
}

此程式碼下載“test.jpg”文件,但當我嘗試在 Windows 圖像檢視器中打開它時,它顯示“我們似乎不支援此文件格式”訊息。我對 PHP 比較陌生,所以我不知道輸出/輸入流的所有技巧,所以如果我的程式碼很糟糕,請告訴我。

歡迎任何及所有協助。謝謝!

P粉322918729P粉322918729372 天前815

全部回覆(1)我來回復

  • P粉667649253

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

    我認為您需要為格式指定“jpeg”而不是“jpg”。

    $image_to_convert->setFormat("jpeg");

    #

    回覆
    0
  • 取消回覆