2013-10-14 40 views
0

我已經將不同格式的許多圖像上載到服務器上的文件夾。使用ImageMagick我想轉換它們並將它們替換爲JPG。PHP批量使用Image Magick將文件夾中的所有圖像轉換爲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/*.*:沒有這樣的文件或目錄@錯誤/ blob.c/OpenBlob/2638」

在我看,我可以使用mogrify的文檔,但我不知道誰將comand行插入到PHP中。

+2

您需要首先獲取文件夾中的每個文件;你不會自動完成。 – zurfyx

+0

這些文件已經在文件夾中。 –

+0

是的,但你需要獲取它們的列表和'foreach'它。 http://php.net/glob將有所幫助。 – ceejayoz

回答

0

你並不真正需要的PHP對於這一點,你可以做的外殼直接:

#!/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()執行該腳本以上。