繁体   English   中英

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

[英]Convert .HEIC to .JPG with ImageMagick in PHP

我想尝试创建一个小型图像转换器,将上传到 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 比较陌生,所以我不知道输出/输入流的所有技巧,所以如果我的代码很糟糕,请告诉我。

欢迎任何帮助。 谢谢!

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

$image_to_convert->setFormat("jpeg");

在我从 png 和 jpeg 等图像格式更改后设法让它工作,而是将转换后的 HEIC 图像下载为 .PDF 文件。

我还必须先将 PDF 文件上传(写入)到服务器,然后才能通过网站下载(读取)它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM