从PHP转换tiff文件到jpg

msa*_*bot 0 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`;
 }
}
Run Code Online (Sandbox Code Playgroud)

但是这永远不会进入for循环,因为opendir失败了.该文件夹确实存在.

我通过exec调用它("perl test.pl arg1 arg2"); 在PHP中

这是我应该这样做,因为它不起作用?

此外,我提供了几乎所有需要访问或写入chmod 777的内容

谢谢

Eth*_*her 6

首先,你应该在每个脚本和模块中始终拥有这两行:

use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)

这些行会给你很多错误和线索,告诉你你错过了什么.

其次,您需要检查opendir命令的返回值,因为如果它无法打开目录(例如,如果它不存在),它会返回错误.该$!变量包含最新的错误消息.如果您在尝试打开的错误消息中打印确切的文件名,则可以查看文件规范是否不正确:

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

如果您的目录规范是相对的,并且您位于错误的目录中,则可以使用chdir更改目录.

opendir命令的规范在perldoc -f opendir中.您可以阅读perldoc perlvar中的特殊变量.