我已将许多不同格式的图片上传到我服务器上的文件夹中。使用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中插入命令行的人。
答案 0 :(得分:1)
您不能使用这样的通配符指定文件名。
您可以使用http://php.net/glob或directory functions来获取符合您要求的文件列表,然后使用foreach
循环逐步执行这些文件。
答案 1 :(得分: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()
执行上述脚本。