Example #1
0
 public CompressOptions(short sliderLevel, QualitiLevelCheckBox qLevelCheckBox, UserMod userMod, OutputMod outMode)
 {
     SliderLevel          = sliderLevel;
     QualitiLevelCheckBox = qLevelCheckBox;
     UserMod   = userMod;
     OutputMod = outMode;
 }
        /// <summary>
        /// Used to evaluate the quality levels of images for our "Simple Mode"
        /// TODO: Add simple Mode Functionality
        /// </summary>
        /// <param name="filePath">a path to a file </param>
        /// <param name="qualitiLevelCheckBox">Checkbox parameter ( High Medium Low )</param>
        /// <returns>the qualityvalue for an image</returns>
        public short EvaluateQualityLevel(string filePath, QualitiLevelCheckBox qualitiLevelCheckBox)
        {
            MagickImageInfo image = new MagickImageInfo(filePath);

            //calc resulution
            double resulution = (1000000.0 / (image.Height * image.Width));

            Console.WriteLine(@"Resulution: " + resulution);

            //get File Size
            long fileSize = new FileInfo(filePath).Length;


            if (qualitiLevelCheckBox == QualitiLevelCheckBox.High)
            {
                Console.WriteLine(@"Resulution: " + resulution);

                // >= 20Mpix
                if (resulution >= 20)
                {
                    if (fileSize >= 5)
                    {
                        return(55);
                    }

                    if (fileSize >= 2)
                    {
                        return(70);
                    }

                    if (fileSize >= 1)
                    {
                        return(85);
                    }
                    else
                    {
                        return(95);
                    }
                }

                // >= 10Mpix

                if (resulution >= 10)
                {
                    if (fileSize >= 4)
                    {
                        return(45);
                    }

                    if (fileSize >= 2)
                    {
                        return(70);
                    }

                    if (fileSize >= 1)
                    {
                        return(79);
                    }

                    if (fileSize <= 0.75)
                    {
                        return(100);
                    }
                }

                // >= 5Mpix

                if (resulution >= 5)
                {
                    if (fileSize >= 4)
                    {
                        return(45);
                    }

                    if (fileSize >= 2)
                    {
                        return(70);
                    }

                    if (fileSize >= 1)
                    {
                        return(79);
                    }

                    if (fileSize <= 0.75)
                    {
                        return(100);
                    }
                }

                if (resulution <= 4)
                {
                    return(76);
                }

                if (resulution <= 3)
                {
                    return(80);
                }
            }



            // Calulate with factor

            if (qualitiLevelCheckBox == QualitiLevelCheckBox.Middle)
            {
                double middleRes = ((fileSize * 1000) / resulution);

                Console.WriteLine(@"middle middle middle  " + middleRes);
                Console.Write(@"FileSize: " + fileSize + @" ");

                return((short)middleRes);
            }

            if (qualitiLevelCheckBox == QualitiLevelCheckBox.Low)
            {
                Console.WriteLine(@"Low Low Low Low " + (short)(resulution * 5) / (fileSize / 100));
                Console.Write(@"FileSize: " + fileSize + @" ");
                return((short)(2 * ((110 * resulution) / fileSize)));
            }



            return(0);
        }