PHP使用Image Magick将文件夹中的所有图像批量转换为jpg

PHP使用Image Magick将文件夹中的所有图像批量转换为jpg,php,Php,我已经上传了许多不同格式的图片到我服务器上的一个文件夹中。我想使用ImageMagick将它们转换并替换为JPG 这是我的代码: <?php try { /*** the image file ***/ $image = 'temp_images/*.*'; /*** a new imagick object ***/ $im = new Imagick(); /*** ping the image **

我已经上传了许多不同格式的图片到我服务器上的一个文件夹中。我想使用ImageMagick将它们转换并替换为JPG

这是我的代码:

<?php

try
{
        /*** the image file ***/
        $image = 'temp_images/*.*';

        /*** a new imagick object ***/
        $im = new Imagick();

        /*** ping the image ***/
        $im->pingImage($image);

        /*** read the image into the object ***/
        $im->readImage( $image );

        /**** convert to png ***/
        $im->setImageFormat( "jpg" );

        /*** write image to disk ***/
        $im->writeImage( 'temp_images/input/*.jpg' );

        echo 'Image Converted';
}
catch(Exception $e)
{
        echo $e->getMessage();
}

?>

当我指定一个特定的图像时,它会将其转换,当我将say
abc.gif
替换为
*.
时,我会得到以下错误

'无法打开image
temp_images/input/*.
:没有这样的文件或目录@error/blob.c/OpenBlob/2638'


在文档中,我读到我可以使用mogrify,但我不知道谁可以将comand line插入PHP。

您不能用这样的通配符指定文件名


您可以使用或获取符合您需求的文件列表,然后使用
foreach
循环逐步遍历这些文件。

您不需要PHP,可以直接在shell中执行:

#!/bin/bash
shopt -s nullglob nocaseglob # Ignore case and errors
for i in *.png *.tif *.bmp   # Do all images except JPEGs
do
   newname=${i%.*}.jpg       # Strip file extension
   convert "$i" "$newname"   # Convert to JPEG
done

或者,如果您真的想在PHP中执行,可以使用
system()
来执行上面的脚本。

您需要首先获取文件夹中的每个文件;您不会自动执行此操作。文件已在文件夹中。是的,但您需要获取它们的列表并
foreach
it。会有帮助的。