コード例 #1
0
ファイル: RgbConverter.cs プロジェクト: Maciejlys/ImgPogCrypt
        public Bitmap ToBitmap(List <int> bits, Bitmap image)
        {
            if (IsImageTooSmall(bits.Count, image))
            {
                throw new ArgumentException("Image is too small!");
            }

            // Bitmap newImage = new Bitmap(image.Width, image.Height);
            Bitmap newImage = new Bitmap(image);

            BitmapUtil.Iterate(image, bits, (point, diff) =>
            {
                NumberColor numberColor = NumberColor.fromColor(image.GetPixel(point.X, point.Y));
                if (numberColor.R <= 253)
                {
                    numberColor.R += diff;
                }
                else if (numberColor.G <= 253)
                {
                    numberColor.G += diff;
                }
                else if (numberColor.B <= 253)
                {
                    numberColor.B += diff;
                }

                newImage.SetPixel(point.X, point.Y, numberColor.toColor());
            });
            return(newImage);
        }
コード例 #2
0
        public List <int> Parse(Bitmap bitmap, Bitmap basemap)
        {
            List <int> result = new List <int>();

            if (bitmap.Width != basemap.Width || bitmap.Height != basemap.Height)
            {
                throw new ArgumentException("Invalid base image!");
            }

            BitmapUtil.Iterate(bitmap, point =>
            {
                NumberColor bitmapColor  = NumberColor.fromColor(bitmap.GetPixel(point.X, point.Y));
                NumberColor basemapColor = NumberColor.fromColor(basemap.GetPixel(point.X, point.Y));
                if (PixelUtil.IsPixelReadable(bitmap.GetPixel(point.X, point.Y)) && PixelUtil.IsPixelReadable(basemap.GetPixel(point.X, point.Y)))
                {
                    int colorDiff = bitmapColor.SubtractNumberColor(basemapColor);
                    result.Add(colorDiff);
                }
            });
            return(result);
        }
コード例 #3
0
        public static bool IsPixelWritable(Color pixel)
        {
            NumberColor numberColor = NumberColor.fromColor(pixel);

            return((numberColor.R <= 254 || numberColor.G <= 254 || numberColor.B <= 254) && numberColor.A > 0);
        }
コード例 #4
0
        public static bool IsPixelReadable(Color pixel)
        {
            NumberColor numberColor = NumberColor.fromColor(pixel);

            return(numberColor.A > 0);
        }