示例#1
0
 public static double[] BitmapToDouble(Bitmap Image)
 {
     BitmapLocker Locker = new BitmapLocker();
     Locker.Lock(Image);
     double[] result = new double[Image.Width * Image.Height];
     int i = 0;
     foreach (uint n in Locker)
     {
         byte r = (byte)(n >> 16);
         byte g = (byte)(n >> 8);
         byte b = (byte)n;
         result[i] = (byte)(0.3 * r + 0.59 * g + 0.11 * b);
         i++;
     }
     Locker.Unlock();
     return result;
 }
        public static double[] BitmapToDouble(Bitmap Image)
        {
            BitmapLocker Locker = new BitmapLocker();

            Locker.Lock(Image);
            double[] result = new double[Image.Width * Image.Height];
            int      i      = 0;

            foreach (uint n in Locker)
            {
                byte r = (byte)(n >> 16);
                byte g = (byte)(n >> 8);
                byte b = (byte)n;
                result[i] = (byte)(0.3 * r + 0.59 * g + 0.11 * b);
                i++;
            }
            Locker.Unlock();
            return(result);
        }
示例#3
0
 public static Bitmap DoubleToBitmap(double[] Values, int Width, int Height, double min, double max)
 {
     Bitmap result = new Bitmap(Width, Height);
     BitmapLocker Locker = new BitmapLocker();
     Locker.Lock(result);
     int index = 0;
     for (int i = 0; i < Locker.Height; i++)
     {
         for (int j = 0; j < Locker.Width; j++)
         {
             double p = 255 * (Values[index]-min) / (max - min);
             byte h = (byte)p;
             Locker[i, j] = ((uint)255 << 24) + ((uint)h << 16) + ((uint)h << 8) + h;
             index++;
         }
     }
     Locker.Unlock();
     return result;
 }
        public static Bitmap DoubleToBitmap(double[] Values, int Width, int Height, double min, double max)
        {
            Bitmap       result = new Bitmap(Width, Height);
            BitmapLocker Locker = new BitmapLocker();

            Locker.Lock(result);
            int index = 0;

            for (int i = 0; i < Locker.Height; i++)
            {
                for (int j = 0; j < Locker.Width; j++)
                {
                    double p = 255 * (Values[index] - min) / (max - min);
                    byte   h = (byte)p;
                    Locker[i, j] = ((uint)255 << 24) + ((uint)h << 16) + ((uint)h << 8) + h;
                    index++;
                }
            }
            Locker.Unlock();
            return(result);
        }
示例#5
0
 public BitmapLockerEnumerator(BitmapLocker owner)
 {
     this.Owner = owner;
 }
 public BitmapLockerEnumerator(BitmapLocker owner)
 {
     this.Owner = owner;
 }