0

我已将许多不同格式的图像上传到服务器上的文件夹中。使用 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();
}

?>

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

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

在我读到的文档中,我可以使用 mogrify,但我不知道谁将命令行插入 PHP。

4

2 回答 2

1

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

您可以使用http://php.net/glob目录函数来获取符合您要求的文件列表,然后使用foreach循环逐步执行它们。

于 2013-10-14T20:29:48.307 回答
0

您实际上并不需要 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()执行上面的脚本。

于 2014-08-05T16:10:44.120 回答