From bb899b0b89324dadf4094f25e3b8d9b7a04e38a2 Mon Sep 17 00:00:00 2001 From: TankerElite <64478551+TankerElite@users.noreply.github.com> Date: Sun, 21 Aug 2022 18:23:30 +0300 Subject: [PATCH] Add Resize for windows Change target folders in resize.bat to point to correct folders (need entire path, starting from c: or equiv.) --- assets/mentors-images/resize.bat | 7 + assets/mentors-images/scale.bat | 310 +++++++++++++++++++++++++++++++ 2 files changed, 317 insertions(+) create mode 100644 assets/mentors-images/resize.bat create mode 100644 assets/mentors-images/scale.bat diff --git a/assets/mentors-images/resize.bat b/assets/mentors-images/resize.bat new file mode 100644 index 0000000..d83c10f --- /dev/null +++ b/assets/mentors-images/resize.bat @@ -0,0 +1,7 @@ +@echo off +set "source_folder=\original" +set "result_folder_1=\optimised" + +for %%a in ("%source_folder%\*jpg") do ( + call scale.bat -source "%%~fa" -target "%result_folder_1%\%%~nxa" -max-height 300 -max-width 300 -keep-ratio no -force yes +) diff --git a/assets/mentors-images/scale.bat b/assets/mentors-images/scale.bat new file mode 100644 index 0000000..381d580 --- /dev/null +++ b/assets/mentors-images/scale.bat @@ -0,0 +1,310 @@ +@if (@X)==(@Y) @end /* JScript comment + @echo off + cscript //E:JScript //nologo "%~f0" %* + ::pause + exit /b %errorlevel% +@if (@X)==(@Y) @end JScript comment */ + +//https://msdn.microsoft.com/en-us/library/windows/desktop/ms630819(v=vs.85).aspx + +var imageFile = new ActiveXObject("WIA.ImageFile"); +var imageProcess = new ActiveXObject("WIA.ImageProcess"); +var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); +var ARGS=WScript.Arguments; + +/****** +Scale filter description: + +Scales image to the specified Maximum Width and Maximum Height preserving +Aspect Ratio if necessary. + + +MaximumWidth - Set the MaximumWidth property to the width (in pixels) + that you wish to scale the image to. +MaximumHeight - Set the MaximumHeight property to the height (in pixels) + that you wish to scale the image to. +PreserveAspectRatio - Set the PreserveAspectRatio property to True + [the default] if you wish to maintain the current aspect + ration of the image, otherwise False and the image will + be stretched to the MaximumWidth and MaximumHeight +FrameIndex - Set the FrameIndex property to the index of a frame if + you wish to modify a frame other than the ActiveFrame, + otherwise 0 [the default] + + +******/ + +//defaults + +var maxWidth=0; +var maxHeight=0; + +var pRatio=true; +var frameIndex=0; + +var source=""; +var target=""; + +var force=false; + +var height=0; +var width=0; + +var percentage=false; + +//////////////////////////// +//// // +/**/ var QUALITY=100; // +//// // +//////////////////////////// + +function existsFile(path){ + if (fileSystem.FileExists(path)) + return true; +} + +function existsFolder(path){ + if (fileSystem.FolderExists(path)) + return true; +} + +function deleteFile(path){ + fileSystem.DeleteFile(path); +} + +function loadImage(image,imageFile){ + try{ + image.LoadFile(imageFile); + }catch(err){ + WScript.Echo("Probably "+imageFile+" is not a valid image file"); + WScript.Echo(err.message); + WScript.Quit(30); + } + height=image.Height; + width=image.Width; +} + +function ID2Format(id){ + var ids={}; + ids["{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"]="BPM"; + ids["{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}"]="PNG"; + ids["{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}"]="GIF"; + ids["{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"]="JPG"; + ids["{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}"]="TIFF"; + + return ids[id]; +} + +function format2ID(format){ + formats={}; + formats["BMP"]="{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"; + formats["PNG"]="{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}"; + formats["GIF"]="{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}"; + formats["JPG"]="{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"; + formats["TIFF"]="{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}"; + + return formats[format]; +} + +function convert(image,format){ + var ic=imageProcess.Filters.Count; + var filterFormat=format2ID(format); + if(filterFormat==null){ + WScript.Echo("not supported target format "+format); + WScript.Quit(90); + } + imageProcess.Filters.Add(imageProcess.FilterInfos("Convert").FilterID); + imageProcess.Filters(ic+1).Properties("FormatID").Value = filterFormat; + imageProcess.Filters(ic+1).Properties("Quality").Value = QUALITY; +} + +function scale(){ + if(maxHeight<=0){ + WScript.Echo("MaximumHeight ("+maxHeight+") should be bigger than 0"); + WScript.Quit(80); + } + + if(maxWidth<=0){ + WScript.Echo("MaximumHeight ("+maxWidth+") should be bigger than 0"); + WScript.Quit(81); + } + + var ic=imageProcess.Filters.Count; + //var filterFormat=format2ID(format); + imageProcess.Filters.Add(imageProcess.FilterInfos("Scale").FilterID); + + imageProcess.Filters(ic+1).Properties("MaximumWidth").Value = maxWidth; + imageProcess.Filters(ic+1).Properties("MaximumHeight").Value = maxHeight; + //WScript.Echo(pRatio+"::"+maxWidth+"::"+maxHeight+">>"+width+"++"+height); + imageProcess.Filters(ic+1).Properties("PreserveAspectRatio").Value = pRatio; + imageProcess.Filters(ic+1).Properties("FrameIndex").Value = frameIndex; +} + +function fromPerc(){ + maxWidth=Math.round((width*maxWidth)/100); + maxHeight=Math.round((height*maxHeight)/100); + if(maxHeight==0) + maxHeight=1; + if(maxWidth==0) + maxWidth=1; +} + + +function printHelp(){ + + WScript.Echo( WScript.ScriptName + " - resizes an image"); + WScript.Echo(" "); + WScript.Echo(WScript.ScriptName + "-source source.file -target file.format [-max-height height] [-max-width width] [-percentage yes|no] [-keep-ratio yes|no] [-frame-index -0.5..1] "); + WScript.Echo("-source - the image that will flipped or rotated."); + WScript.Echo("-target - the file where the transformations will be saved in.If the file extension format is different than the source it will be converted to the pointed one.Supported formats are BMp,JPG,GIF,TIFF,PNG"); + WScript.Echo("-percentage - whether the rescale will be calculated in pixels or in percentages.If yes percentages will be used.Default is no."); + WScript.Echo("-force - If yes and the target file already exists , it will be overwritten"); + WScript.Echo("-max-height - max height of the image"); + WScript.Echo("-max-width - max width of the image"); + WScript.Echo("-keep-ratio - if dimensions ratio will be preserved.Default is yes"); + WScript.Echo("-frame-index - Have no idea what this is used for , but it is pressented in the rotation filter capabilities.Images with this and without looks the same.Accepted values are from -0.5 to 1"); + +} + +function parseArguments(){ + if (WScript.Arguments.Length<4 || ARGS.Item(1).toLowerCase() == "-help" || ARGS.Item(1).toLowerCase() == "-h" ) { + printHelp(); + WScript.Quit(0); + } + + if (WScript.Arguments.Length % 2 == 1 ) { + WScript.Echo("Illegal arguments "); + printHelp(); + WScript.Quit(1); + } + + //ARGS + for(var arg = 0 ; arg 1){ + WScript.Echo("Wrong argument - frame index should be between -0.5 and 1"); + WScript.Quit(25); + } + + } catch (err){ + WScript.Echo("Wrong argument:"); + WScript.Echo(err.message); + WScript.Quit(20); + } + } + } + + if (target==""){ + WScript.Echo("Target file not passed"); + WScript.Quit(5); + } + + if(source==""){ + WScript.Echo("Source file not passed"); + WScript.Quit(6); + } +} + +parseArguments(); + +if(!existsFile(source)){ + WScript.Echo("Source image: " + source +" does not exists"); + WScript.Quit(40); +} + +if(existsFile(target) && !force){ + WScript.Echo("Target image: " + target +" already exists"); + WScript.Quit(45); +} + +if(existsFolder(target)){ + WScript.Echo("There's existing folder with the target file (" + target +") name"); + WScript.Quit(46); +} + +if(existsFile(target) && force){ + deleteFile(target); +} + +var targetFormat=target.split(".")[target.split(".").length-1].toUpperCase(); +loadImage(imageFile,source); +var sourceFormat=ID2Format(imageFile.FormatID); + + +if(maxWidth==0 && !percentage){ + maxWidth=width; +} + +if(maxHeight==0 && !percentage){ + maxHeight=height; +} + +if(maxWidth==0 && percentage){ + maxWidth=100; +} + +if(maxHeight==0 && percentage){ + maxHeight=100; +} + + +if(percentage){ + fromPerc(); +} + + + +/// +scale(); +/// + +if (sourceFormat !== targetFormat ){ + convert(resImg,targetFormat); +} + +var resImg=imageProcess.Apply(imageFile); +resImg.SaveFile(target); \ No newline at end of file