public static unsafe FramePixelData FromFile(string filename)
        {
            using (Bitmap bitmap = (Bitmap)Bitmap.FromFile(filename)) {
                var frame = new FramePixelData(bitmap.Width, bitmap.Height);

                var bitmapData = bitmap.LockBits(
                    new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                    ImageLockMode.ReadOnly,
                    PixelFormat.Format32bppArgb);
                try {
                    byte *pSourceRow = (byte *)bitmapData.Scan0;
                    int   indexFrame = 0;
                    for (int y = 0; y < frame.Height; ++y)
                    {
                        PixelArgb *pPixel = (PixelArgb *)pSourceRow;
                        for (int x = 0; x < frame.Width; ++x)
                        {
                            frame.Data [indexFrame] = new Microsoft.Xna.Framework.Color(
                                pPixel->R, pPixel->G, pPixel->B, pPixel->A);

                            indexFrame++;
                            pPixel++;
                        }
                        pSourceRow += bitmapData.Stride;
                    }
                } finally {
                    bitmap.UnlockBits(bitmapData);
                }
                return(frame);
            }
        }
Esempio n. 2
0
		public static unsafe FramePixelData FromFile (string filename)
		{
			using (Bitmap bitmap = (Bitmap) Bitmap.FromFile (filename)) {
				var frame = new FramePixelData (bitmap.Width, bitmap.Height);

				var bitmapData = bitmap.LockBits (
					new Rectangle (0, 0, bitmap.Width, bitmap.Height),
					ImageLockMode.ReadOnly,
					PixelFormat.Format32bppArgb);
				try {
					byte* pSourceRow = (byte*) bitmapData.Scan0;
					int indexFrame = 0;
					for (int y = 0; y < frame.Height; ++y) {
						PixelArgb* pPixel = (PixelArgb*) pSourceRow;
						for (int x = 0; x < frame.Width; ++x) {
							frame.Data [indexFrame] = new Microsoft.Xna.Framework.Color (
								pPixel->R, pPixel->G, pPixel->B, pPixel->A);

							indexFrame++;
							pPixel++;
						}
						pSourceRow += bitmapData.Stride;
					}
				} finally {
					bitmap.UnlockBits (bitmapData);
				}
				return frame;
			}
		}
Esempio n. 3
0
        public static unsafe FramePixelData FromFile(string filename)
        {
            var result = ImageResult.FromMemory(File.ReadAllBytes(filename), StbImageSharp.ColorComponents.RedGreenBlueAlpha);
            var frame  = new FramePixelData(result.Width, result.Height);

            fixed(byte *b = &result.Data[0])
            {
                for (var i = 0; i < result.Data.Length; i += 4)
                {
                    frame.Data[i / 4] = new Color(b[i + 0], b[i + 1], b[i + 2], b[i + 3]);
                }
            }

            return(frame);
        }