从PHP转换tiff文件到jpg

时间:2010-06-30 15:26:31

标签: php perl imagemagick exec

我正在尝试将tif文件的文件夹转换为jpeg,以便它们可以显示在我的网站上。我目前的方法不起作用。我用

编写了一个perl脚本
#!/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的内容

感谢

1 个答案:

答案 0 :(得分: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中了解特殊变量。