PHP使用Image Magick将文件夹中的所有图像批量转换为jpg
我已经上传了许多不同格式的图片到我服务器上的一个文件夹中。我想使用ImageMagick将它们转换并替换为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 **
<?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();
}
?>
当我指定一个特定的图像时,它会将其转换,当我将sayabc.gif
替换为*.
时,我会得到以下错误
'无法打开imagetemp_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。会有帮助的。