/** * Outputs displayable image of image channel to be corrected. * @param layer the channel corrected * @return true if successful **/ private void outputDisplayableBase(int layer) { float[] array; int width = base_dimensions[0]; int height = base_dimensions[1]; float value, value16bpp; string image_name = (string)dropdown_imageLayer.Items[layer]; array = new float[width * height]; Array.Copy(base_data, width * height * layer, array, 0, width * height); FREE_IMAGE_FORMAT format = FREE_IMAGE_FORMAT.FIF_TIFF; FREE_IMAGE_TYPE type = FREE_IMAGE_TYPE.FIT_FLOAT; FREE_IMAGE_SAVE_FLAGS save_flags = FREE_IMAGE_SAVE_FLAGS.TIFF_NONE; FreeImageBitmap image = new FreeImageBitmap(width, height, type); float maxValue = Enumerable.Range(0, array.Length).Max(m => array[m]); float minValue = Enumerable.Range(0, array.Length).Min(m => array[m]); for (int j = 0; j < height; ++j) { Scanline <float> scanline = image.GetScanline <float>(j); for (int k = 0; k < width; ++k) { value = array[width * j + k]; value16bpp = (1.0f / (maxValue - minValue) * (value - minValue)); scanline.SetValue(value16bpp, k); } } image.RotateFlip(base_orientation); image.Save("./Workspace/" + image_name + "_base_displayable.tiff", format, save_flags); }
/** * Outputs .tiff file to be read into Argo Solution as input parameter * @param layer the channel corrected * @return true if successful **/ private bool outputBase(int layer) { float[] array; int width = base_dimensions[0]; int height = base_dimensions[1]; float value; if (layer == -1) { return(false); } string image_name = (string)dropdown_imageLayer.Items[layer]; array = new float[width * height]; Array.Copy(base_data, width * height * layer, array, 0, width * height); FREE_IMAGE_FORMAT format = FREE_IMAGE_FORMAT.FIF_TIFF; FREE_IMAGE_TYPE type = FREE_IMAGE_TYPE.FIT_FLOAT; FREE_IMAGE_SAVE_FLAGS save_flags = FREE_IMAGE_SAVE_FLAGS.TIFF_NONE; FreeImageBitmap image = new FreeImageBitmap(width, height, type); for (int j = 0; j < height; ++j) { Scanline <float> scanline = image.GetScanline <float>(j); for (int k = 0; k < width; ++k) { value = array[width * j + k]; scanline.SetValue(value, k); } } image.RotateFlip(base_orientation); image.Save("./Workspace/" + image_name + "_base.tiff", format, save_flags); return(true); }
/** */ private void updateImages(int index) { float[] array; float maxValue, minValue, value; int value16bpp; Bitmap bitmap; Color color; Image old_bitmap; if (base_dimensions != null) { int width = base_dimensions[0]; int height = base_dimensions[1]; array = new float[width * height]; Array.Copy(base_data, width * height * index, array, 0, width * height); FreeImageBitmap image_bitmap = new FreeImageBitmap(new Bitmap(width, height), width, height); maxValue = Enumerable.Range(0, array.Length).Max(m => array[m]); minValue = Enumerable.Range(0, array.Length).Min(m => array[m]); for (int j = 0; j < height; ++j) { Scanline <int> scanline = image_bitmap.GetScanline <int>(j); for (int k = 0; k < width; ++k) { value = array[width * j + k]; value16bpp = (int)(255.0f / (maxValue - minValue) * (value - minValue)); color = Color.FromArgb(value16bpp, value16bpp, value16bpp); scanline.SetValue(color.ToArgb(), k); } } image_bitmap.RotateFlip(base_orientation); bitmap = image_bitmap.ToBitmap(); image_bitmap.Dispose(); old_bitmap = image_base.Image; image_base.Image = bitmap; if (old_bitmap != null) { old_bitmap.Dispose(); } } if (sliver_dimensions != null) { int width = sliver_dimensions[0]; int height = sliver_dimensions[1]; array = new float[width * height]; Array.Copy(sliver_data, width * height * index, array, 0, width * height); FreeImageBitmap image_bitmap = new FreeImageBitmap(new Bitmap(width, height), width, height); maxValue = Enumerable.Range(0, array.Length).Max(m => array[m]); minValue = Enumerable.Range(0, array.Length).Min(m => array[m]); for (int j = 0; j < height; ++j) { Scanline <int> scanline = image_bitmap.GetScanline <int>(j); for (int k = 0; k < width; ++k) { value = array[width * j + k]; value16bpp = (int)(255.0f / (maxValue - minValue) * (value - minValue)); color = Color.FromArgb(value16bpp, value16bpp, value16bpp); scanline.SetValue(color.ToArgb(), k); } } image_bitmap.RotateFlip(sliver_orientation); bitmap = image_bitmap.ToBitmap(); image_bitmap.Dispose(); old_bitmap = image_sliver.Image; image_sliver.Image = bitmap; if (old_bitmap != null) { old_bitmap.Dispose(); } } }