我希望尝试创建一个小型图像转换器,将上传到 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 文件上传(写入)到服务器,然后才能通过网站下载(阅读)它。
或者使用第 3 方库进行转换 php-heic-to-jpg(仅限 Linux)。