diff --git a/SmoulderingBeachBall/SmoulderingBeachBall/ImageMaker.fs b/SmoulderingBeachBall/SmoulderingBeachBall/ImageMaker.fs index d9afa56..6c5ff54 100644 --- a/SmoulderingBeachBall/SmoulderingBeachBall/ImageMaker.fs +++ b/SmoulderingBeachBall/SmoulderingBeachBall/ImageMaker.fs @@ -2,19 +2,33 @@ namespace SmoulderingBeachBall module ImageMaker = + open System open System.Drawing - //open System.Drawing.Imaging + open System.IO - let addOverlay colour image = - null + let private validateDimension dimension = + match dimension with + | dimension when dimension <= 0 -> invalidArg "dimension" "The width and height must be greater than 0." + | _ -> () - let saveImage filePath = - null + let private validateDirectory filePath = + let path = Path.GetDirectoryName filePath + match (Directory.Exists path) with + | false -> invalidArg "filePath" "Unable to save to the specified location because it does not exist." + | true -> () - let makeImage (width: int) (height: int) (colour: Brush) = + let makeImage width height colour filepath = async { - use bitmap = new Bitmap(width, height) - use graphics = Graphics.FromImage(bitmap) - graphics.FillRectangle(Brushes.Coral, new Rectangle(0, 0, bitmap.Width, bitmap.Height)) - return "we" + try + validateDimension width + validateDimension height + validateDirectory filepath + use bitmap = new Bitmap(width, height) + use graphics = Graphics.FromImage(bitmap) + graphics.FillRectangle(colour, new Rectangle(0, 0, bitmap.Width, bitmap.Height)) + bitmap.Save(filepath) + return "Image saved." + with + | :? ArgumentException as ex -> return ex.Message + | _ as ex -> return ex.Message } \ No newline at end of file diff --git a/SmoulderingBeachBall/SmoulderingBeachBall/ScratchPad.fsx b/SmoulderingBeachBall/SmoulderingBeachBall/ScratchPad.fsx index f15e156..caef410 100644 --- a/SmoulderingBeachBall/SmoulderingBeachBall/ScratchPad.fsx +++ b/SmoulderingBeachBall/SmoulderingBeachBall/ScratchPad.fsx @@ -2,14 +2,27 @@ open System.Drawing open System.Drawing.Imaging +open SmoulderingBeachBall + +// INITIAL IDEA ======================================================================================================= let width = 500 let height = 500 let colour = Brushes.BurlyWood +let testPath = "C:/users/craig/desktop/test.png" let draw () = use bmp = new Bitmap(width, height) use gr = Graphics.FromImage(bmp) gr.FillRectangle(colour, new Rectangle(0, 0, bmp.Width, bmp.Height)) gr.DrawImage(bmp, 0, 0) - bmp.Save("C:/users/craig/desktop/test.png", ImageFormat.Png) -let result = draw () + bmp.Save(testPath, ImageFormat.Png) + +// IMAGE MAKER ======================================================================================================== + +let im_width = 500 +let im_height = 500 +let im_colour = Brushes.BurlyWood +let im_testPath = "C:/users/craig/desktop/test.png" + +ImageMaker.makeImage im_width im_height im_colour im_testPath + |> Async.RunSynchronously \ No newline at end of file diff --git a/SmoulderingBeachBall/SmoulderingBeachBall/SmoulderingBeachBall.fsproj b/SmoulderingBeachBall/SmoulderingBeachBall/SmoulderingBeachBall.fsproj index baad55f..4395824 100644 --- a/SmoulderingBeachBall/SmoulderingBeachBall/SmoulderingBeachBall.fsproj +++ b/SmoulderingBeachBall/SmoulderingBeachBall/SmoulderingBeachBall.fsproj @@ -6,18 +6,6 @@ - - 215d64d2-031c-33c7-96e3-61794cd1ee61 - 2 - 4 - tlbimp - - - d37e2a3e-8545-3a39-9f4f-31827c9124ab - 2 - 4 - tlbimp -