/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 - 2 0 2 2 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠDeep ĠLearning Ġproject Ġcontributors . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin x . dl . dataset . preprocessor . image Ċ Ċ import Ġorg . jetbrains . kotlin x . dl . dataset . preprocessor . Image Shape Ċ import Ġjava . awt . Rendering Hints Ċ import Ġjava . awt . image . Buffered Image Ċ Ċ /** Ċ Ġ* ĠThis Ġimage Ġpre processor Ġdefines Ġthe ĠResize Ġoperation . Ċ Ġ* Ċ Ġ* ĠResize Ġoperations Ġcreates Ġnew Ġimage Ġwith Ġthe Ġfollowing Ġsizes : Ċ Ġ* Ġ Ġ- Ġresized Width Ġ= Ġ[ output Width ] Ċ Ġ* Ġ Ġ- Ġresized Height Ġ= Ġ[ output Height ] Ċ Ġ* Ċ Ġ* ĠThe Ġfinal Ġimage Ġquality Ġdepends Ġon Ġthe Ġfollowing Ġt unable Ġparameters : Ġ[ interpolation ], Ġ[ rendering Speed ], Ġ[ enable Ant ialias ing ]. Ċ Ġ* Ċ Ġ* Ġ@ property Ġ[ output Width ] ĠThe Ġoutput Ġwidth . Ċ Ġ* Ġ@ property Ġ[ output Height ] ĠThe Ġoutput Ġheight . Ċ Ġ* Ġ@ property Ġ[ interpolation ] ĠInterpol ation Ġalgorithm . Ċ Ġ* Ġ@ property Ġ[ rendering Speed ] ĠSpeed Ġof Ġpreprocessing . Ċ Ġ* Ġ@ property Ġ[ enable Ant ialias ing ] ĠThe Ġimage Ġwill Ġbe Ġc ropped Ġfrom Ġthe Ġright Ġby Ġthe Ġgiven Ġnumber Ġof Ġpixels . Ċ Ġ*/ Ċ public Ġclass ĠResize ( ĊĠĠĠ Ġpublic Ġvar Ġoutput Width : ĠInt Ġ= Ġ 1 0 0 , ĊĠĠĠ Ġpublic Ġvar Ġoutput Height : ĠInt Ġ= Ġ 1 0 0 , ĊĠĠĠ Ġpublic Ġvar Ġinterpolation : ĠInterpol ation Type Ġ= ĠInterpol ation Type . B IL INE AR , ĊĠĠĠ Ġpublic Ġvar Ġrendering Speed : ĠRendering Speed Ġ= ĠRendering Speed . MEDIUM , ĊĠĠĠ Ġpublic Ġvar Ġenable Ant ialias ing : ĠBoolean Ġ= Ġtrue Ċ ) Ġ: ĠImage Pre processor Base () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Output Shape ( input Shape : ĠImage Shape ): ĠImage Shape Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠImage Shape ( output Width . to Long (), Ġoutput Height . to Long (), Ġinput Shape . channels ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( image : ĠBufferedImage ): ĠBufferedImage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresized Image Ġ= ĠBufferedImage ( output Width , Ġoutput Height , Ġimage . type ) ĊĠĠĠĠĠĠĠ Ġval Ġgraphics 2 D Ġ= Ġresized Image . create Graphics () ĊĊĠĠĠĠĠĠĠ Ġval Ġrendering Hint Ġ= Ġwhen Ġ( interpolation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInterpol ation Type . B IL INE AR Ġ-> ĠRendering Hints . VALUE _ INTER POL ATION _ B IL INE AR ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInterpol ation Type . NE ARE ST Ġ-> ĠRendering Hints . VALUE _ INTER POL ATION _ NE ARE ST _ NE IGH B OR ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInterpol ation Type . B IC UB IC Ġ-> ĠRendering Hints . VALUE _ INTER POL ATION _ B IC UB IC ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrendering Speed Ġ= Ġwhen Ġ( rendering Speed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRendering Speed . FAST Ġ-> ĠRendering Hints . VALUE _ RENDER _ SPEED ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRendering Speed . S LOW Ġ-> ĠRendering Hints . VALUE _ RENDER _ QUAL ITY ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRendering Speed . MEDIUM Ġ-> ĠRendering Hints . VALUE _ RENDER _ DEFAULT ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgraphics 2 D . set Rendering Hint ( Rendering Hints . KEY _ INTER POL ATION , Ġrendering Hint ) ĊĠĠĠĠĠĠĠ Ġgraphics 2 D . set Rendering Hint ( Rendering Hints . KEY _ RENDER ING , Ġrendering Speed ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( enable Ant ialias ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraphics 2 D . set Rendering Hint ( Rendering Hints . KEY _ ANTI ALIAS ING , ĠRendering Hints . VALUE _ ANTI ALIAS _ ON ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgraphics 2 D . drawImage ( image , Ġ 0 , Ġ 0 , Ġoutput Width , Ġoutput Height , Ġnull ) ĊĠĠĠĠĠĠĠ Ġgraphics 2 D . dispose () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresized Image ĊĠĠĠ Ġ} Ċ } Ċ