web-dev-qa-db-ja.com

寸法が.txtファイルに印刷されたフォルダー内の画像を取得するスクリプト

タイトルにあるように、「ファイル名」と「ピクセル寸法」とともにフォルダー内のすべての画像(JPG、PNG、GIF ecc)を.txtファイルに印刷するためのWin 7のスクリプトはありますか?
コマンドラインでdirを試してみましたが、名前、ファイルサイズなどのみが表示されます。


ExifToolを使用したソリューション

.exeのファイル名にすでにコード化されているコマンドを使用した最良の取引imoは、完全にドラッグアンドドロップスクリプトで、どこでも使用できます。

更新
便宜上、exeファイルのインラインファイル名をこれに少し変更しました

ExifTool(-FileName -Imagesize -r -T -w+! %0finfo.txt -ext jpg --ext exe .).exe

このようにして、.txtの出力を画像ごとに1行に最小限に抑えました(-T)そして再帰オプションを追加しました(-r)サブフォルダーも処理できるようにします。


ImageMagickによるソリューション

ImageMagickを使用してソリューションの下に配置しました。非常にすばやく簡単ですが、多くの場合、ライブラリをインストールする必要があります。

5
Gruber

ExifTool (ポータブル実行可能ファイルの名前がexiftool.exeに変更されました)の使用:

exiftool -ImageSize -r .

ここでImageSizeは、関心のあるタグ名であり、画像の幅x画像の高さ-rスイッチを使用すると、サブディレクトリ内のファイルを再帰的に処理できます。

カスタム 出力文字列形式 も簡単です。例えば:

exiftool -p "Image Name: \"$FileName\"$/Image Size: $ImageSize$/" -r .

この場合、タグ名の前には$が付きます。 $/は改行を出力します。

注:上記のコマンドは、コマンドプロンプトで入力する必要があります。出力をテキストファイルにリダイレクトするには、それらに> Details.txtを追加できます。


プログラムを実行して、関連する画像の詳細を含むテキストファイルを書き込むようにする場合は、次のように 実行可能ファイルの名前を変更 できます。

ExifTool(-FileName -Imagesize -w+! %0fDetails.txt -ext gif --ext exe .).exe

これにより、すべてのコンソール出力(-w)が現在のディレクトリのDetails.txtという名前のファイルに書き込まれます。この場合、出力は現在のディレクトリ内のすべてのGIFの画像名とサイズで構成されます。 -w+、および!の意味を含む、%0fパラメータの詳細については、上記のドキュメントリンクを参照してください。

-ext jpg -ext pngなどを使用して処理する拡張機能をinclude追加するか、-ext gifを完全に削除してサポートされているすべての拡張子を読み取ることができますファイルタイプ(不要な非画像を含む)。

--ext exeは、すべてのEXEを除外するために使用されます(プログラム自体の実行可能ファイルがレポートに含まれないようにするため)。

もちろん、-rを追加して、再帰処理を有効にすることもできます。

プログラムがいかに強力であるか(そして完全なPerlソースが自由に利用できることを考えると拡張可能)を考えると、プログラムでできることはたくさんあります!

6
Karan

PowerShellスクリプト 以下にそれを行う必要があります。リストと出力のディレクトリを変更するだけです。私はWindows8.1とWindowsPowerShellISEでテストしました。

param( $folder = "E:\My Pictures", $outputFile = "E:\details.txt" )
$objShell = New-Object -ComObject Shell.Application
$fileList = @()
$attrList = @{}
$details = ( "Dimensions" )
$objFolder = $objShell.namespace($folder)
for ($attr = 0 ; $attr  -le 500; $attr++)
{
    $attrName = $objFolder.getDetailsOf($objFolder.items, $attr)
    if ( $attrName -and ( -not $attrList.Contains($attrName) ))
    {
        $attrList.add( $attrName, $attr )
    }
}
dir $folder -Recurse -Directory | ForEach-Object{
    $objFolder = $objShell.namespace($_.FullName)
    foreach($file in $objFolder.items())
    {
        foreach( $attr in $details)
        {
            $attrValue = $objFolder.getDetailsOf($file, $attrList[$attr])
            if ( $attrValue )
            {
                Add-Member -InputObject $file -MemberType NoteProperty -Name $("A_" + $attr) -value $attrValue
            }
        }
        $fileList += $file
        $fileList.Count
    }
}
$fileList | Export-Csv $outputFile -Delimiter ','
$fileList | Format-Table
1
DrMoishe Pippik

ImageMagickを使用した、シンプルで迅速なソリューションです(ただし、多くの場合、ライブラリが必要です)。

興味のあるフォルダでコマンドラインを開きます(Shift+RightClick フォルダウィンドウ内で[ここでコマンドウィンドウを開く]を選択し、cmdプロンプトでこれを使用します

identify -format "%f %wx%h\r" *.jpg > info.txt

「WIDTHxHEIGHT」のようにフォーマットされた%f filename%w width、および%h heightの呼び出し

詳細はこちら http://www.imagemagick.org/script/escape.php

1
Gruber