Ejemplo n.º 1
0
        public static IRawConverter CreateInstance(RawConverterEnum converter)
        {
            switch (converter)
            {
            case RawConverterEnum.DCRAW:
                return(new DCRaw());

            case RawConverterEnum.FREEIMAGE:
                return(new FreeImageConverter());

            default:
                return(new FreeImageConverter());
            }
        }
Ejemplo n.º 2
0
        private static async Task <IImageData> RawToImageArray(string path, int bitDepth, RawConverterEnum rawConverter, CancellationToken ct)
        {
            using (var fs = new FileStream(path, FileMode.Open)) {
                using (var ms = new System.IO.MemoryStream()) {
                    fs.CopyTo(ms);
                    var converter = RawConverter.CreateInstance(rawConverter);
                    var rawType   = Path.GetExtension(path).ToLower().Substring(1);
                    var data      = await converter.Convert(s : ms, bitDepth : bitDepth, rawType : rawType, metaData : new ImageMetaData(), token : ct);

                    return(data);
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Loads an image from a given file path
        /// </summary>
        /// <param name="path">File Path to image</param>
        /// <param name="bitDepth">bit depth of each pixel</param>
        /// <param name="isBayered">Flag to indicate if the image is bayer matrix encoded</param>
        /// <param name="rawConverter">Which type of raw converter to use, when image is in RAW format</param>
        /// <param name="ct">Token to cancel operation</param>
        /// <returns></returns>
        public static Task <IImageData> FromFile(string path, int bitDepth, bool isBayered, RawConverterEnum rawConverter, CancellationToken ct = default(CancellationToken))
        {
            return(Task.Run(async() => {
                if (!File.Exists(path))
                {
                    throw new FileNotFoundException();
                }
                BitmapDecoder decoder;
                switch (Path.GetExtension(path).ToLower())
                {
                case ".gif":
                    decoder = new GifBitmapDecoder(new Uri(path), BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
                    return await BitmapToImageArray(decoder, isBayered);

                case ".tif":
                case ".tiff":
                    decoder = new TiffBitmapDecoder(new Uri(path), BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
                    return await BitmapToImageArray(decoder, isBayered);

                case ".jpg":
                case ".jpeg":
                    decoder = new JpegBitmapDecoder(new Uri(path), BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
                    return await BitmapToImageArray(decoder, isBayered);

                case ".png":
                    decoder = new PngBitmapDecoder(new Uri(path), BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
                    return await BitmapToImageArray(decoder, isBayered);

                case ".xisf":
                    return await XISF.Load(new Uri(path), isBayered);

                case ".fit":
                case ".fits":
                    return await FITS.Load(new Uri(path), isBayered);

                case ".cr2":
                case ".cr3":
                case ".nef":
                case ".raf":
                case ".raw":
                case ".pef":
                case ".dng":
                case ".arw":
                case ".orf":
                    return await RawToImageArray(path, bitDepth, rawConverter, ct);

                default:
                    throw new NotSupportedException();
                }
            }));
        }