Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="fiAudio"></param>
        /// <param name="fiConfig"></param>
        /// <param name="fiImage"></param>
        /// <returns></returns>
        public static Image GetImageFromAudioSegment(FileInfo fiAudio, FileInfo fiConfig, FileInfo fiImage, IAnalyser2 analyser)
        {
            var config = new ConfigDictionary(fiConfig.FullName); //read in config file

            bool doAnnotate = config.GetBoolean(AnalysisKeys.AnnotateSonogram);

            //bool doNoiseReduction = config.GetBoolean(Keys.NOISE_DO_REDUCTION);
            //double bgNoiseThreshold = config.GetDouble(Keys.NOISE_BG_REDUCTION);

            var diOutputDir = new DirectoryInfo(Path.GetDirectoryName(fiImage.FullName));

            //Image image = null;

            if (doAnnotate)
            {
                if (analyser == null)
                {
                    string analyisName = config.GetString(AnalysisKeys.AnalysisName);
                    LoggedConsole.WriteLine("\nWARNING: Could not construct annotated image because analysis name not recognized:");
                    LoggedConsole.WriteLine("\t " + analyisName);
                    return(null);
                }

                throw new NotSupportedException("Code intentionally broken because it is out of date and not used");

                /*
                 * Image image = null;
                 * var settings = new AnalysisSettings
                 * {
                 *  ConfigDict = config.GetDictionary(),
                 *  SegmentAudioFile = fiAudio,
                 *  ConfigFile = fiConfig,
                 *  SegmentImageFile = fiImage,
                 *  SegmentOutputDirectory = diOutputDir
                 * };
                 *
                 * // want to pass SampleRate of the original file.
                 * settings.SampleRateOfOriginalAudioFile = int.Parse(settings.ConfigDict[AnalysisKeys.ResampleRate]);
                 *
                 * analyser.BeforeAnalyze(settings);
                 *
                 * var results = analyser.Analyze(settings, new SegmentSettings<FileInfo>(se));
                 *
                 * image = results.ImageFile == null ? null : Image.FromFile(results.ImageFile.FullName);
                 *
                 * analyser = null;
                 * return image;*/
            }
            else
            {
                analyser = null;
                var          configDict = config.GetDictionary();
                BaseSonogram sonogram   = Audio2DecibelSonogram(fiAudio, configDict);
                var          mti        = Sonogram2MultiTrackImage(sonogram, configDict);
                var          image      = mti.GetImage();

                if (image != null)
                {
                    if (fiImage.Exists)
                    {
                        fiImage.Delete();
                    }

                    image.Save(fiImage.FullName, ImageFormat.Png);
                }

                return(image);
            }
        }