module ParasitemiaUI.PiaZ
open System
-open System.Windows
open System.IO
open System.IO.Compression
open Emgu.CV.Structure
open Newtonsoft.Json
-open Newtonsoft.Json.Converters
open Types
// Write each images and the associated information.
for srcImg in data.images do
- let imgFilename = (string srcImg.num) + imageExtension
+ let imgFilename = (string srcImg.Num) + imageExtension
let imgEntry = file.CreateEntry (imgFilename, CompressionLevel.NoCompression) // FIXME: It seems a compression is applied to this file despite of the 'NoCompression' flag.
- srcImg.img.ToBitmap().Save (imgEntry.Open (), System.Drawing.Imaging.ImageFormat.Tiff)
+ srcImg.Img.ToBitmap().Save (imgEntry.Open (), System.Drawing.Imaging.ImageFormat.Tiff)
let imgJSONEntry = file.CreateEntry (imgFilename + ".json", CompressionLevel.Fastest)
use imgJSONFileWriter = new StreamWriter (imgJSONEntry.Open ())
imgJSONFileWriter.Write (
JsonConvert.SerializeObject (
{
- num = srcImg.num
- name = srcImg.name
- RBCRadius = srcImg.config.RBCRadius.Pixel
- parameters = srcImg.config.Parameters
- dateLastAnalysis = srcImg.dateLastAnalysis
- rbcs = srcImg.rbcs
- healthyRBCBrightness = srcImg.healthyRBCBrightness
- infectedRBCBrightness = srcImg.infectedRBCBrightness
+ num = srcImg.Num
+ name = srcImg.Name
+ RBCRadius = srcImg.Config.RBCRadius.Pixel
+ parameters = srcImg.Config.Parameters
+ dateLastAnalysis = srcImg.DateLastAnalysis
+ rbcs = srcImg.RBCs
+ healthyRBCBrightness = srcImg.HealthyRBCBrightness
+ infectedRBCBrightness = srcImg.InfectedRBCBrightness
}
)
)
for v in fromVersion + 1 .. toVersion do
match v with
| 1 -> // Version 0 -> 1 : set initial brightness for rbc.
- data.images |> List.iter (fun i -> i.healthyRBCBrightness <- 1.f; i.infectedRBCBrightness <- 1.f)
+ data.images |> List.iter (fun i -> i.HealthyRBCBrightness <- 1.f; i.InfectedRBCBrightness <- 1.f)
| _ -> ()
data
/// <summary>
/// Load document from a give file path.
/// </summary>
-/// <param name="filePath"></param>
+/// <param name="filePath">Path to the PiaZ file</param>
+/// <param name="defaultConfig"></param>
/// <exception cref="System.IOException">If the file cannot be read</exception>
let load (filePath : string) (defaultConfig : ParasitemiaCore.Config.Config) : DocumentData =
use file = ZipFile.Open (filePath, ZipArchiveMode.Read)
for imgEntry in file.Entries do
if imgEntry.Name.EndsWith (imageExtension) then
use bitmap = new System.Drawing.Bitmap (imgEntry.Open (), false)
- let img = new Image<Bgr, byte> (bitmap)
+ let img = bitmap.ToImage<Bgr, byte> ()
imgNum <- imgNum + 1
let imgJSONEntry = file.GetEntry (imgEntry.Name + ".json")
use imgJSONFileReader = new StreamReader (imgJSONEntry.Open ())
}
config.SetRBCRadius imgInfo.RBCRadius
- yield
- {
- num = imgNum
- name = imgInfo.name
- config = config
- dateLastAnalysis = imgInfo.dateLastAnalysis
- img = img
- rbcs = imgInfo.rbcs
- healthyRBCBrightness = imgInfo.healthyRBCBrightness
- infectedRBCBrightness = imgInfo.infectedRBCBrightness
- }
+
+ SourceImage (imgNum, imgInfo.name, config, imgInfo.dateLastAnalysis, img, imgInfo.rbcs, HealthyRBCBrightness = imgInfo.healthyRBCBrightness, InfectedRBCBrightness = imgInfo.infectedRBCBrightness)
]
}
\ No newline at end of file