Jr.Janitor, я тоже в своё время искал что-либо подобное, но ничего
внятного не нашёл. Я ограничился таким способом:
1. Устанавливал
ImageMagick, конкретно версию для работы с 8-битным цветом отсюда:
ImageMagick: Install from Binary Distribution.
2. Использовал такой сценарий vbscript
:
читать дальше »
Код:

Option Explicit
On Error Resume Next
Const ERROR_SUCCESS = 0
Dim objArgs
Dim objImg
Dim strResult
Dim sMsgs
Set objArgs = WScript.Arguments
If objArgs.Count <> 1 Then
WScript.Echo _
"Usage: " & WScript.ScriptName & " <FileNamesTemplate>" & vbCrLf & vbCrLf & _
"Example: " & WScript.ScriptName & " ""c:\windows\*.bmp"""
WScript.Quit 2
Else
Set objImg = CreateObject("ImageMagickObject.MagickImage.1")
strResult = objImg.Identify("-format", "Name:[%f] Type:[%m] Dim:[%wx%hx%z]\r\n", objArgs(0))
'strResult = Replace(strResult, vbCrLf, " \n ")
If Err.Number <> ERROR_SUCCESS Then
ShowError
Set objImg = Nothing
WScript.Quit 1
Else
'WScript.Echo "NOERROR" & vbCrLf & strResult
WScript.Echo strResult
Set objImg = Nothing
WScript.Quit 0
End If
End If
'=========================================================================================
Sub ShowError
sMsgs = ""
If BasicError(Err.Number) > 5000 Then
'sMsgs = " ImageMagickObject" & vbCrLf
End If
'WScript.Echo sMsgs & vbCrLf & Err.Number & ": " & Err.Description
WScript.Echo Err.Description
End Sub
'=========================================================================================
'=========================================================================================
Function BasicError(e)
BasicError = e And &HFFFF&
End Function
'=========================================================================================
3. Привязывал скрипт для выделенного файла в Far Manager посредством «User Menu» и макроса для проверки.
Выглядело в результате сие примерно так:
читать дальше »
Код:

╔═════════════ Ошибок не обнаружено ═════════════╗
║ Name:[PageAll.jpg] Type:[JPEG] Dim:[616x166x8] ║
║ ║
╟────────────────────────────────────────────────╢
║ { OK } ║
╚════════════════════════════════════════════════╝
Или так (Ваш файл):
читать дальше »
Код:

╔═══════════════════════════════════ Найдены ошибки ════════════════════════════════════╗
║ identity: 325: Corrupt JPEG data: premature end of data segment `C:\attachment.jpg': ║
║ identity: 325: Corrupt JPEG data: bad Huffman code `C:\attachment.jpg': ║
║ ║
╟───────────────────────────────────────────────────────────────────────────────────────╢
║ { OK } ║
╚═══════════════════════════════════════════════════════════════════════════════════════╝
Подобным же образом у меня сделан скрипт на группу выделенных в Far Manager'е файлов. Приводить его не буду, ибо основная идея показана во втором пункте: попытка идентификации изображения, отлов возможной ошибки при этом, далее выход из скрипта с установлением нулевого/не нулевого кода ошибки, который затем используется во внешнем приложении (в данном случае — Far Manager'е) для отображения соответствующего сообщения, а как и чем будете пользоваться Вы — решать Вам.
К сожалению, в то время утилита «identify.exe»
ImageMagick (как сейчас — не знаю) не устанавливала ненулевой код возврата при ошибке в изображении, а так можно было бы вполне обойтись без скрипта VBScript (в моём, понятно, случае), одним пакетным файлом с вызовом «identify.exe».
P.S. Вполне возможно, что я плохо искал, или что ситуация изменилась за прошедшее время, и коллеги посоветуют более простое решение.