#include <File.au3>
#include <GDIPlus.au3>
Local $sPath = FileSelectFolder("", @ScriptDir)
If @error Then Exit
Local $sMask = "*.jpg", $sPathOut = $sPath & "\Cropped", _
$iColor = 0xFFFFFFFF, $iIndent = 5, $iQuality = 100
Local $aFiles = _FileListToArray($sPath, $sMask, $FLTA_FILES)
If @error Then Exit MsgBox($MB_TOPMOST + $MB_ICONERROR, Default, StringFormat('Файлы по шаблону не найдены -> "%s\%s"', $sPath, $sMask))
_GDIPlus_Startup()
If Not FileExists($sPathOut) Then DirCreate($sPathOut)
Local $sCLSID = _GDIPlus_EncodersGetCLSID("JPG")
Local $tParams = _GDIPlus_ParamInit(1)
Local $tData = DllStructCreate("int Quality")
DllStructSetData($tData, "Quality", $iQuality)
_GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, DllStructGetPtr($tData))
Local $hBitmap, $iW, $iH, $tBitmapData, $iScan0, $tPixel, $iTop, $iBottom, $hBitmapCrop
For $i = 1 To $aFiles[0]
$hBitmap = _GDIPlus_ImageLoadFromFile($sPath & "\" & $aFiles[$i])
If @error Then
MsgBox($MB_TOPMOST + $MB_ICONERROR, Default, StringFormat('Не удалось открыть изображение -> "%s\%s"', $sPath, $aFiles[$i]))
ContinueLoop
EndIf
$iW = _GDIPlus_ImageGetWidth($hBitmap)
$iH = _GDIPlus_ImageGetHeight($hBitmap)
$tBitmapData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $iW, $iH, $GDIP_ILMREAD, $GDIP_PXF32ARGB)
$iScan0 = DllStructGetData($tBitmapData, "Scan0")
$tPixel = DllStructCreate("int[" & $iW * $iH & "]", $iScan0)
$iTop = 0
$iBottom = $iH
For $iY = 0 To $iH - 1
$iRowOffset = $iY * $iW + 1
For $iX = 0 To $iW - 1
$iPixel = DllStructGetData($tPixel, 1, $iRowOffset + $iX)
If $iPixel <> $iColor Then
$iTop = $iY
ExitLoop 2
EndIf
Next
Next
For $iY = $iH - 1 To $iTop Step -1
$iRowOffset = $iY * $iW + 1
For $iX = 0 To $iW - 1
$iPixel = DllStructGetData($tPixel, 1, $iRowOffset + $iX)
If $iPixel <> $iColor Then
$iBottom = $iY
ExitLoop 2
EndIf
Next
Next
If $iTop - $iIndent >= 0 Then $iTop -= $iIndent
If $iBottom + $iIndent <= $iH Then $iBottom += $iIndent
_GDIPlus_BitmapUnlockBits($hBitmap, $tBitmapData)
$hBitmapCrop = _GDIPlus_BitmapCloneArea($hBitmap, 0, $iTop, $iW, $iBottom - $iTop)
_GDIPlus_ImageSaveToFileEx($hBitmapCrop, $sPathOut & "\" & $aFiles[$i], $sCLSID, $tParams)
_GDIPlus_BitmapDispose($hBitmapCrop)
_GDIPlus_BitmapDispose($hBitmap)
Next
_GDIPlus_Shutdown()
MsgBox($MB_TOPMOST + $MB_ICONINFORMATION, Default, "Обработка завершена")
ShellExecute($sPathOut)