2

機能があります

 $result = create_watermark( 'input_file_name' ,'output_file_name');

/images500枚の画像が入ったディレクトリがあります。ファイルにはすべて名前が付けられていますimages_(some_unknown_numbers).png(すべてpng)。次に、それらをループ内の関数で実行し、、、などを出力/markedimage/images_1.pngしたいと思います。images_2.pngimages_3.png

このスクリプトをUbuntuで実行して、シェルも使用できるようにしたい

これどうやってするの?

4

4 に答える 4

3
<?php

foreach (glob("*.png") as $filename) {
    create_watermark($filename, '/watermarked_dir/' . $filename);
}
于 2010-04-23T13:08:16.873 に答える
0

出力ファイルの番号のインデックスを再作成するかどうかはわかりません。この例では、それらを保持する必要があります。

<?php
$dir = './sourceDir';
$outputDir = './markedimage';

//get files matching pattern. maybe you could use glob() instead
$files = scandir($dir);
$files = preg_grep('~^images_\d+.png$~i', $files);

//process each file
foreach ($files as $file) {
     create_watermark( $dir . '/' . $file, $outputDir . '/' . $file);
}
于 2010-04-23T12:59:45.670 に答える
0

テストされていませんが、これも機能するはずです。

// Iterate over all filesystem objects in /images
foreach( new DirectoryIterator('/images') as $file ) {
    // check if item is a readable file
    if( $file->isFile() && $file->isReadable() ) {
        // give debug message so we know what the script is doing
        echo "Watermarking $file \n";
        // call your function
        create_watermark(
            // argument 1 is the full path to the image
            $file->getPathname(),
            // argument 2 is the destination folder plus the filename w/out path
            '/markedimage/' . $file->getFilename()
        );
    // tell us if it is not a readable file
    } else {
        echo "Skipped $file \n";
    }
}

フォルダ内にpngファイルではないファイルがある場合は、DirectoryIteratorの代わりにGlobIteratorを使用できますが、PHP5.3が必要になります。

見る

于 2010-04-23T13:08:33.723 に答える
0

私は2番目の答えを使用しました

働くもの

<?php

foreach (glob("*.png") as $filename) {
    create_watermark($filename, '/watermarked_dir/' . $filename);
}
?>

この回答は変更なしで機能しました:Dありがとうございますが、登録されていないため投票できません

@ 1 imはそれを機能させることができませんでしたが、これにいくらかの努力を払えば、それはうまくいくと思います

<?php
$dir = './sourceDir';
$outputDir = './markedimage';

//get files matching pattern. maybe you could use glob() instead
$files = scandir($dir);
$files = preg_grep('~^images_\d+.png$~i', $files);

//process each file
foreach ($files as $file) {
     create_watermark( $dir . '/' . $file, $outputDir . '/' . $file);
}

?>

私を割り当てようとして助けてくれたguyzに感謝します私は過去5時間からこれをやろうとしましたが、彼女は失敗しました5分で解決しました

:D thankxxx

スティーブ

于 2010-04-23T13:27:08.233 に答える