package Ġcom . the apache 6 4 . read gen . core Ċ Ċ import Ġjava . awt . Color Ċ import Ġjava . awt . Font Ċ import Ġjava . awt . Rendering Hints Ċ import Ġjava . io . File Ċ import Ġjava . net . URL Ċ import Ġjavax . image io . Image IO ĊĊ Ċ object ĠCover Generator Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠWIDTH Ġ= Ġ 1 5 0 0 ĊĠĠĠ Ġprivate Ġconst Ġval ĠHEIGHT Ġ= Ġ 4 5 0 ĊĠĠĠ Ġprivate Ġconst Ġval ĠR AN DOM _ IMAGE _ URL Ġ= Ġ" https :// source . unsplash . com / random /${ WIDTH } x ${ HEIGHT }? nature " ĊĠĠĠ Ġprivate Ġval Ġtrans Black Ġby Ġlazy Ġ{ ĠColor ( 0 , Ġ 0 , Ġ 0 , Ġ 1 3 0 ) Ġ} ĊĊĊĠĠĠ Ġprivate Ġval Ġcover Font Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfont Res Ġ= ĠCover Generator :: class . java . getResource AsStream ("/ Doctor Gl itch . ot f ") ĊĠĠĠĠĠĠĠ ĠFont . create Font ( Font . TR U ET YPE _ FONT , Ġfont Res ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġgenerate ( projectName : ĠString , ĠfontSize : ĠInt , Ġcustom Font : ĠString ?): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDownload Ġimage ĊĠĠĠĠĠĠĠ Ġval Ġimage Ġ= Ġdownload Image () ĊĠĠĠĠĠĠĠ Ġreturn Ġdraw ( image , ĠprojectName , ĠfontSize , Ġcustom Font ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdraw ( ĊĠĠĠĠĠĠĠ Ġinput File : ĠFile , ĊĠĠĠĠĠĠĠ Ġtext : ĠString , ĊĠĠĠĠĠĠĠ Ġ_ fontSize : ĠInt , ĊĠĠĠĠĠĠĠ Ġcustom Font : ĠString ?, ĊĠĠĠĠĠĠĠ Ġis From Test : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠfontSize Ġ= Ġ_ fontSize . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġinput Image Ġ= ĠImage IO . read ( inputFile ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinput Image . create Graphics (). let Ġ{ Ġcanvas Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . set Rendering Hint ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRendering Hints . KEY _ FR ACTION AL METR ICS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRendering Hints . VALUE _ FR ACTION AL METR ICS _ ON ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . set Rendering Hint ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRendering Hints . KEY _ TEXT _ ANTI ALIAS ING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRendering Hints . VALUE _ TEXT _ ANTI ALIAS _ LCD _ HR GB ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTrans Ġbg ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . paint Ġ= Ġtrans Black ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . fillRect ( 0 , Ġ 0 , Ġinput Image . width , Ġinput Image . height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTitle Ġfont Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfont Ġ= Ġif Ġ( custom Font Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġget Ġdefault Ġfont ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcover Font . derive Font ( Font . PLAIN , ĠfontSize ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFont . create Font ( Font . TR U ET YPE _ FONT , ĠFile ( custom Font )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. derive Font ( Font . PLAIN , ĠfontSize ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . font Ġ= Ġfont ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmetrics Ġ= Ġcanvas . font Metrics ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFind ing Ġcenter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx : ĠInt Ġ= Ġ( input Image . width Ġ- Ġmetrics . string Width ( text )) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy : ĠInt Ġ= Ġ( input Image . height Ġ- Ġmetrics . height ) Ġ/ Ġ 2 Ġ+ Ġmetrics . as cent ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . paint Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw String ( text , Ġx , Ġy ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . dispose () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠS aving Ġcover ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoutputFile Ġ= ĠFile (" cover . jpeg ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage IO . write ( input Image , Ġ" jpeg ", ĠoutputFile ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is From Test . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput File . delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputFile ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdownload Image (): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimage Ġ= ĠImage IO . read ( URL ( RANDOM _ IMAGE _ URL )) ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile (" cover _ background . jpeg ") ĊĠĠĠĠĠĠĠ ĠImage IO . write ( image , Ġ" jpeg ", Ġfile ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfile ĊĠĠĠ Ġ} Ċ Ċ }