在PHP中使用ImageMagick将.HEIC转换为.JPG格式

ih99xse1  于 2023-02-28  发布在  PHP
关注(0)|答案(2)|浏览(490)

我期待尝试创建一个小的图像转换器,将HEIC文件上传到一个php的网络文档到。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相对来说是个新手,所以我不知道输出/输入流的所有技巧,所以如果我的代码很糟糕,请告诉我。
欢迎任何帮助。谢谢!

i7uq4tfw

i7uq4tfw1#

我认为您需要指定“jpeg”而不是“jpg”作为您的格式。
$image_to_convert->setFormat("jpeg");

0wi1tuuw

0wi1tuuw2#

设法让它工作后,我改变了图像格式,如png和jpeg,而是下载转换后的HEIC图像作为一个。PDF文件。
我还必须先把PDF文件上传(写)到服务器上,然后才能通过网站下载(阅读)。

相关问题