撮影した大量の画像をループ処理し、焦点距離とカメラ モデルを読み取り、焦点距離と合計のグラフを表示するスクリプトがあります (次のレンズの購入を決定するのに役立ちますが、それ以外にもポイント)。
これは、10 MB 未満の JPG 画像ではまったく問題なく機能しますが、20 MB に近い RAW ファイル (Canon の CR2 形式など) に到達するとすぐに、「メモリ不足」エラーが発生します。
Powershell のメモリ制限を増やすか、ファイル全体を読み込まずにファイルのメタデータを読み取る方法はありますか?
これは私が現在使用しているものです:
# load image by statically calling a method from .NET
$image = [System.Drawing.Imaging.Metafile]::FromFile($file.FullName)
# try to get the ExIf data (silently fail if the data can't be found)
# http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html
try
{
# get the Focal Length from the Metadata code 37386
$focalLength = $image.GetPropertyItem(37386).Value[0]
# get model data from the Metadata code 272
$modelByte = $image.GetPropertyItem(272)
# convert the model data to a String from a Byte Array
$imageModel = $Encode.GetString($modelByte.Value)
# unload image
$image.Dispose()
}
catch
{
#do nothing with the catch
}
ここでソリューションを使用してみました: http://goo.gl/WY7Rgしかし、CR2 ファイルはどのプロパティでも空白を返すだけです...
どんな助けでも大歓迎です!