コード例 #1
0
        public ImageItem(string path, string outputPath, int newSize)
        {
            ImageFormat extension;
            string      outputName;

            Filename      = Path.GetFileName(path);
            ThumbnailSize = 20;

            var originalImage = new Bitmap(path);

            extension     = originalImage.RawFormat;
            originalImage = Processing.ChangePixelFormat(originalImage, PixelFormat.Format32bppRgb);

            Bitmap croppedImage = Processing.CropImage(originalImage, newSize);

            outputName = string.Concat(outputPath, "\\", Filename);
            croppedImage.Save(outputName, extension);

            Thumbnail = Processing.CreateThumbnail(croppedImage, ThumbnailSize);

            var AverageColor = Processing.CalculateAvgColor(originalImage);

            AverageHSB = new float[3] {
                AverageColor.GetHue(), AverageColor.GetSaturation(), AverageColor.GetBrightness()
            };

            originalImage.Dispose();
            croppedImage.Dispose();
        }
コード例 #2
0
ファイル: Mozaic.cs プロジェクト: Qbelek/MozaicGenerator
        private Bitmap AdjustColor(Bitmap loadedImage, Bitmap originalFragment, ImageItem loadedImageInfo)
        {
            float satDifference;
            float loadedImageSaturation, originalFragmentSaturation;
            Color originalFragmentAvgColor;

            originalFragmentAvgColor   = Processing.CalculateAvgColor(originalFragment);
            originalFragmentSaturation = originalFragmentAvgColor.GetSaturation();
            loadedImageSaturation      = loadedImageInfo.AverageHSB[1];
            satDifference = originalFragmentSaturation - loadedImageSaturation;

            //loadedImageSaturation + satDifference * (float)2
            loadedImage = TweakSaturation(loadedImage, (float)5 * satDifference);
            return(loadedImage);
        }
コード例 #3
0
ファイル: Mozaic.cs プロジェクト: Qbelek/MozaicGenerator
        private List <ImageItem> FindBestByHue(Bitmap img, List <ImageItem> list)
        {
            float littleImageHue, originalFragmentHue;
            float minError = float.MaxValue;
            float error;
            float offset         = 15;
            var   candidatesList = new List <ImageItem>();
            var   errorList      = new Dictionary <string, float>();
            Color avgColor       = Processing.CalculateAvgColor(img);

            originalFragmentHue = avgColor.GetHue();

            foreach (ImageItem item in list)
            {
                littleImageHue = item.AverageHSB[0];

                //if (Math.Abs(littleImageHue - originalFragmentHue) < 180)
                //{
                //    error = Math.Abs(littleImageHue - originalFragmentHue);
                //}
                //else if (littleImageHue > originalFragmentHue)
                //{
                //    error = 360 - littleImageHue + originalFragmentHue;
                //}
                //else
                //{
                //    error = 360 - originalFragmentHue + littleImageHue;
                //}

                error = Math.Abs(littleImageHue - originalFragmentHue);

                errorList.Add(item.Filename, error);

                if (error < minError)
                {
                    minError = error;
                }
            }
            foreach (ImageItem item in list)
            {
                if (errorList[item.Filename] < minError + offset)
                {
                    candidatesList.Add(item);
                }
            }

            return(candidatesList);
        }