2010-06-30 157 views
0

我想將tif文件的文件夾轉換爲jpeg,以便它們可以顯示在我的網站上。我目前的方法是行不通的。我寫了一個Perl腳本將tiff文件從php轉換爲jpg

#!/usr/bin/perl 

opendir(DIR, $ARGV[0]); 
@files = readdir(DIR); 
closedir(DIR); 

foreach $file (@files){ 
if($file =~ /(.*?)\.tif/){ 
    print "converting $file\n"; 
    `convert -auto-level -depth 12 -type grayscale $ARGV[0]$file $ARGV[1]$1.jpg`; 
} 
} 

但是,這永遠不會進入for循環,因爲opendir失敗。該文件夾確實存在。

我打電話給exec(「perl test.pl arg1 arg2」);在php

這是我應該怎麼做,因爲它不工作?

而且我給需要訪問或寫於chmod 777個

感謝

+0

您是使用相對路徑還是絕對路徑?如果你從shell調用它,轉換命令是否正確工作?你可以很容易地重寫相同的代碼在PHP – Ivan 2010-06-30 15:29:51

+0

什麼是確切的路徑? – 2010-06-30 15:34:18

+1

總是測試打開結果: opendir(DIR,$ ARGV [0])或死「不能打開'$ ARGV [0]':$!」; – Toto 2010-06-30 15:38:23

回答

6

首先的幾乎一切,你應該總是有這兩條線在每個腳本和模塊:

use strict; 
use warnings; 

這些行會給你很多錯誤和線索,會告訴你你錯過了什麼。

其次,您需要檢查opendir命令的返回值,因爲如果無法打開目錄(例如,如果它不存在),它會返回錯誤。變量$!包含最新的錯誤消息。如果您打印在你試圖打開錯誤消息的確切的文件名,你可以看到,如果你的文件的說明是不正確的:

opendir (my $dir, $ARGV[0]) or die "Cannot open $ARGV[0]: $!"; 
my @files = readdir($dir); 
closedir($dir); 

如果目錄規範是相對的,而你是在錯誤的目錄,你可以用chdir更改目錄。

opendir命令的規格在perldoc -f opendir。你可以閱讀關於perldoc perlvar中的特殊變量。