aa2zz6 Posted July 5, 2017 Share Posted July 5, 2017 (edited) We recently had a football camp for kids and we have roughly 100+ images with a black bar above and below each image. Is there a way to crop out the top and bottom black bars as a batch process? I've been cropping each image with paint so far but I've been at this for a few days. I've searched google & google+autoit for cropping images but I didn't find anything that removes the bars. The images seem to have different heights. Edited July 5, 2017 by aa2zz6 Link to comment Share on other sites More sharing options...
UEZ Posted July 6, 2017 Share Posted July 6, 2017 (edited) Try this code whereas this loads only one image and crop it by seaching for 0xFF000000 (black) color. If the cropping is not fully proper because of still black borders then increate the $iTolerance value. expandcollapse popup#include <GDIPlus.au3> _GDIPlus_Startup() Global $sFile = @ScriptDir & "\Images\IMG_2360.JPG" Global $hImage = _GDIPlus_ImageLoadFromFile($sFile) Global $sDLL = @ScriptDir & "\_GDIPlus_BitmapGetCropArea.dll" If Not FileExists($sDLL) Then _CropDLL(True) Global $hDLL = DllOpen($sDLL) Global $tPos = DllStructCreate("int iPosX;int iPosY;int iPosW;int iPosH"), $iSeachColor = 0xFF000000, $iTolerance = 32 DllCall($hDLL, "bool", "_GDIPlus_BitmapGetCropArea", "ptr", $hImage, "struct*", $tPos, "uint", $iSeachColor, "ubyte", $iTolerance) ConsoleWrite($tPos.iPosX & ", " & $tPos.iPosY & ", " & $tPos.iPosW & ", " & $tPos.iPosH & @CRLF) Global $hBitmap_Cropped = _GDIPlus_BitmapCloneArea($hImage, $tPos.iPosX, $tPos.iPosY, $tPos.iPosW, $tPos.iPosH, $GDIP_PXF32ARGB) _GDIPlus_ImageSaveToFile($hBitmap_Cropped, StringTrimRight($sFile, 4) & "_cropped.jpg") DllClose($hDLL) _GDIPlus_ImageDispose($hBitmap_Cropped) _GDIPlus_ImageDispose($hImage) _GDIPlus_Shutdown() ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2016-12-01 Func _CropDLL($bSaveBinary = False, $sSavePath = @ScriptDir) Local $CropDLL $CropDLL &= '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' $CropDLL &= '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' $CropDLL &= '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' $CropDLL &= '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' $CropDLL &= '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' $CropDLL &= 'dfqD7IDpuvj+/+saVr4Y0AAQ/K2FwHQNagNZ/3QkEOL6/9Dr7l7CDAAAAACQGwEQrBsBEAxkABCsGwEQAAAAAAAAAAAAAAAAkBsBEBzgABAMZAAQGNAAEAAAAAAAAAAAVhsBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCABAFAgAQAAAAAAAAAAAAAAAAB8IAEAWCABAAAAAAAAAAAAAAAAAIkgAQBoIAEAAAAAAAAAAAAAAAAAAAAAAAAAAACUIAEAAAAAALggAQCoIAEAxiABAAAAAADWIAEAAAAAAGdkaXBsdXMuZGxsAEtFUk5FTDMyLkRMTABtc3ZjcnQuZGxsAAAAR2RpcEJpdG1hcExvY2tCaXRzAABHZXRQcm9jQWRkcmVzcwAATG9hZExpYnJhcnlBAABWaXJ0dWFsUHJvdGVjdAAAX2lvYgAAAAAAAAAA005eWQAAAAASIQEAAQAAAAEAAAABAAAACCEBAAwhAQAQIQEAEBUAADEhAQAAAF9HRElQbHVzX0JpdG1hcEdldENyb3BBcmVhLmRsbABfR0RJUGx1c19CaXRtYXBHZXRDcm9wQXJlYQAAEAEAGAAAAH05Wjt4O3w7gDuEO5A7rDsAEAEAGAAAAH05Wjt4O3w7gDuEO5A7rDsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=' Local $bString = _WinAPI_Base64Decode($CropDLL) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\_GDIPlus_BitmapGetCropArea.dll", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_CropDLL Func _WinAPI_Base64Decode($sB64String) Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>_WinAPI_Base64Decode What you have to do is to read all images to an array to crop these images. I wrote the DLL using FreeBasic to speed up this process. Edited July 6, 2017 by UEZ Added tolerance parameter aa2zz6 1 Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Malkey Posted July 6, 2017 Share Posted July 6, 2017 (edited) Another example. expandcollapse popup#include <GDIPlus.au3> #include <ScreenCapture.au3> #include <File.au3> #include <Array.au3> Local $aFiles = _FileListToArray(@ScriptDir, "IMG_*.jpg", 1) ; $iFlag = $FLTA_FILES (1) = Return files only ;_ArrayDisplay($aFiles) For $i = 1 To UBound($aFiles)-1 $FileOut = @ScriptDir & "\" & StringRegExpReplace($aFiles[$i], "([^\.]+).([^\.]+)", "${1}Modified.${2}") ;ConsoleWrite($FileOut & @CRLF) _TrimBlackTopBottom(@ScriptDir & "\" & $aFiles[$i], $FileOut) Next Func _TrimBlackTopBottom($sFileIn, $sFileOut) Local $hBitmap, $hClone, $hImage, $iX, $iY _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile($sFileIn) ; ---------------- Get Black boundaries ------------------------------- Local $iW = _GDIPlus_ImageGetWidth($hImage), $iH = _GDIPlus_ImageGetHeight($hImage) ;get width and height of the image Local $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH) Local $hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap) _GDIPlus_GraphicsDrawImageRect($hContext, $hImage, 0, 0, $iW, $iH) Local $tBitmapData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $iW, $iH, BitOR($GDIP_ILMWRITE, $GDIP_ILMREAD), $GDIP_PXF32ARGB) ;locks a portion of a bitmap for reading and writing. More infor at http://msdn.microsoft.com/en-us/library/windows/desktop/ms536298(v=vs.85).aspx Local $iScan0 = DllStructGetData($tBitmapData, "Scan0") ;get scan0 (pixel data) from locked bitmap Local $tPixel = DllStructCreate("int[" & $iW * $iH & "];", $iScan0) Local $iPixel, $iRowOffset For $iY = 1 to $iH / 2 $iRowOffset = $iY * $iW + 1 $iPixel = DllStructGetData($tPixel, 1, $iRowOffset + $iW / 2) ;get pixel color ;If StringRegExp(Hex($iPixel), "FF0[0-4]0[0-4]0[0-4]") = 0 Then If StringRegExp(Hex($iPixel), "FF0[0-9A-F]0[0-9A-F]0[0-9A-F]") = 0 Then ; Get not so dark as above line. $iTop = $iY ExitLoop EndIf Next For $iY = $iH -1 To $iH / 2 step - 1 $iRowOffset = $iY * $iW + 1 $iPixel = DllStructGetData($tPixel, 1, $iRowOffset + $iW / 2) ;get pixel color ;ConsoleWrite(Hex($iPixel) & " " & $iY & @CRLF) ;If StringRegExp(Hex($iPixel), "FF0[0-4]0[0-4]0[0-4]") = 0 Then If StringRegExp(Hex($iPixel), "FF0[0-9A-F]0[0-9A-F]0[0-9A-F]") = 0 Then $iBottom = $iY ExitLoop EndIf Next _GDIPlus_BitmapUnlockBits($hBitmap, $tBitmapData) ;unlocks a portion of a bitmap that was locked by _GDIPlus_BitmapLockBits ConsoleWrite($iTop & " " & $iBottom & @CRLF) ; ---------------- End of Get Black boundaries ------------------------------- ; Create 24 bit bitmap clone $iX = _GDIPlus_ImageGetWidth($hImage) $iY = _GDIPlus_ImageGetHeight($hImage) ;ConsoleWrite($iX & " x " & $iY & @CRLF) $hClone = _GDIPlus_BitmapCloneArea($hImage, 0, $iTop, $iX, $iBottom - $iTop, $GDIP_PXF24RGB) ; Save bitmap to file _GDIPlus_ImageSaveToFile($hClone, $sFileOut) ;sleep(500) ;ShellExecute("GDIP_Image.jpg") ; Clean up resources _GDIPlus_ImageDispose($hClone) _GDIPlus_ImageDispose($hImage) _GDIPlus_GraphicsDispose($hContext) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_Shutdown() EndFunc ;==>_TrimBlackTopBottom Edited July 6, 2017 by Malkey Instead of searching for the black from centre to top and bottom where black in the centre will give a false reading of the black border. Change searching for "not black" from top and bottom towards centre of image. aa2zz6 1 Link to comment Share on other sites More sharing options...
aa2zz6 Posted July 6, 2017 Author Share Posted July 6, 2017 Thanks! @UEZ Thanks! @Malkey Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now