Rumah  >  Soal Jawab  >  teks badan

Tukar .HEIC kepada .JPG menggunakan ImageMagick dalam PHP

Saya berharap untuk mencuba mencipta penukar imej kecil yang menukar fail HEIC yang dimuat naik ke dokumen web php kepada .JPG (atau mana-mana format fail biasa yang lain).

Saya menjalankan PHP pada pelayan unix dan telah memasang ImageMagick pada pelayan. Kod baris arahan berikut berjalan pada pelayan:

mogrify -format jpg *.HEIC

Saya mahu menukar kod baris arahan ini kepada PHP.

Seperti yang dinyatakan sebelum ini, saya suka menukar kod pemformatan baris arahan kepada PHP. Pada masa ini saya mempunyai kod berikut yang disediakan dalam bentuk HTML + PHP asas. Fail yang ditukar baru dimuat naik dan tiada pada pelayan. Jika perlu saya boleh memuat naik ke pelayan terlebih dahulu dan kemudian membaca dari fail pelayan.

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

Kod ini memuat turun fail "test.jpg", tetapi apabila saya cuba membukanya dalam Windows Image Viewer, ia memaparkan mesej "Kami nampaknya tidak menyokong format fail ini". Saya agak baru dengan PHP, jadi saya tidak tahu semua helah aliran output/input, jadi jika kod saya buruk, sila beritahu saya.

Sebarang bantuan dialu-alukan. Terima kasih!

P粉322918729P粉322918729322 hari yang lalu749

membalas semua(1)saya akan balas

  • P粉667649253

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

    Saya rasa anda perlu menentukan "jpeg" dan bukannya "jpg" untuk format.

    $image_to_convert->setFormat("jpeg");

    balas
    0
  • Batalbalas