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(); }
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); }
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); }