Як шукати відео / зображення за співвідношенням сторін за допомогою Windows 7 Explorer Search


4

Я знаю, що можу шукати файли (зображення, відео), що мають конкретні розміри , використовуючи width:1920, height:1080.

Але як шукати файли, які, скажімо, співвідношення сторін 16: 9 у Windows 7?


Я не впевнений, що ви можете, я також не можу знайти це співвідношення сторін у деталях властивості зображення. Ті властивості, які можна використовувати як критерії пошуку, я не знаю іншого способу.
Йох

Ви можете додати його до Google. На розширеній сторінці пошуку зображень google.com/advanced_image_search можна вибрати приблизне співвідношення сторін (високий, квадратний, широкий, панорамний). Не впевнений, чи це стосується пошукових запитів Google на вашому ПК.
fixer1234

2
BTW: Ви також можете шукати розміри, використовуючи "розміри: 1920x1080" замість властивостей ширини та висоти окремо.
Йох

Відповідно до msdn.microsoft.com/en-us/library/aa965711%28v=vs.85%29.aspx (який може бути датований), співвідношення сторін не є одним із визначених параметрів пошуку. Окрім сторонньої утиліти, вам потрібно буде здійснити ряд пошуків конкретних розмірів зображення.
fixer1234

Відповіді:


3

Це неможливо при пошуку Windows 7 Explorer


Однак тут є альтернатива, покладаючись на цілісні частини Windows

Для зображень (PowerShell 2.0)

Він читає кожне зображення із заданої кореневої папки, ділить висоту зображень на ширину, порівнює результат із наприклад, 16/10та виводить повний шлях, коли співвідношення відповідає

Get-Childitem "D:\MyPictures" -include @("*.jpg","*.png") -recurse | Where {
    $img = New-Object System.Drawing.Bitmap $_.FullName

    if ($img.Width / $img.Height -eq 16/10 -or 
        $img.Height / $img.Width -eq 16/10) {
        Write-Host $_.FullName
        }           
  }

Для зображень (PowerShell 2.0) - вдосконалена версія для обрізаних / нестандартних співвідношень сторін

$folder      = "C:\Users\Public\Pictures\Sample Pictures"
$searchRatio = 4/3
$AllRatios   = (16/10),(16/9),(4/3),(5/4),(21/10),(21/9)
$filetypes   =  @("*.jpg","*.png","*.bmp")

Clear-Host
Get-Childitem $folder -include $filetypes -recurse | foreach {
    $img = New-Object System.Drawing.Bitmap $_.FullName        
    if ($img.Width -gt $img.Height){ $fileRatio = $img.Width / $img.Height }
    else {$fileRatio = $img.Height / $img.Width}

    $differences = $AllRatios | %{  [math]::abs($_ - $fileRatio) } 
    $bestmatch = $differences | measure -Minimum
    $index = [array]::IndexOf($differences, $bestmatch.minimum)
    $closestRatio = $($AllRatios[$index])

    if ($closestRatio -eq $searchRatio) {
        Write-Host $fileRatio `t`t $_.FullName        
        }           
  }

Пояснення

  1. Скажімо, у вас є папка із зображеннями, де було обрізано більшість з них. Тому вони не мають стандартного співвідношення сторін, як 16: 9. Для них цей скрипт завжди шукає найближчу відповідність стандартного співвідношення сторін. Ви можете розгорнути їх, $AllRatios = (16/10),(16/9),(4/3),(5/4),(21/10),(21/9)якщо хочете

  2. Інші 3 змінні повинні бути поясненнями. $folderце ваша папка, в якій ви хочете здійснити пошук. $searchRatio- це співвідношення сторін, яке ви шукаєте, і $fileTypesвизначає, які типи зображень вас цікавлять


Для відео (PowerShell 2.0 + ffprobe )

$folder      = "D:\My Videos\*"
$ffprobe     = "D:\ffmpeg\ffprobe.exe"
$searchRatio = "13:7"
$filetypes   = @{"*.avi","*.mp4"}

Clear-Host
Get-ChildItem $folder -include $filetypes -recurse | foreach {
    $details = & $ffprobe -loglevel quiet -show_streams -print_format flat=h=0 $_.Fullname
    $fileratio = $details | Select-String '(?<=stream.0.display_aspect_ratio=")\d+:\d+' |
       Foreach {$_.Matches} | ForEach-Object {$_.Value}

    if ($fileratio -eq $searchRatio ) {
        Write-Host $fileratio `t`t $_.FullName
    }   
}  

Пояснення

  1. Ви можете використовувати ffmpeg ffprobe для отримання всієї інформації з відео

    Командування

    ffprobe -loglevel quiet -show_streams -print_format flat=h=0 input.mp4
    

    Приклад Вихід

    stream.0.index=0
    stream.0.codec_name="mpeg4"
    stream.0.codec_long_name="MPEG-4 part 2"
    stream.0.profile="Advanced Simple Profile"
    stream.0.codec_type="video"
    stream.0.codec_time_base="911/21845"
    stream.0.codec_tag_string="XVID"
    stream.0.codec_tag="0x44495658"
    stream.0.width=624
    stream.0.height=336
    stream.0.has_b_frames=1
    stream.0.sample_aspect_ratio="1:1"
    stream.0.display_aspect_ratio="13:7"
    stream.0.pix_fmt="yuv420p"
    stream.0.level=5
    
  2. Далі ми використовуємо Regex для фільтрації пропорцій ( 13:7у нашому прикладі)

  3. Нарешті, ми порівнюємо співвідношення відео та коефіцієнт пошуку та виводимо шлях до файлу, якщо вони відповідають

як Windows Explorer читає значення ширини / висоти? тому що у колонці Explor.exe "ширина / висота" я читаю відео "ширина / висота штрафу". можливо, читаючи, що робить трюк
Уес

Це чудово підходить для зображень, збережених в одному зі стандартних розмірів, які завжди будуть точно відповідати стандартному співвідношенню сторін. Для зображень, які були обрізані вручну, вони часто будуть близькими до стандартного співвідношення сторін, але не є точним. Чи можна змінити цей підхід, щоб обробити діапазон "допуску" для співвідношення сторін? (наприклад, округлення перед порівнянням, тестування різниці як LT X або перевірка того, що значення падає між верхньою і нижньою межею?)
fixer1234
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.