Пример #1
0
        public MgImageSource DetermineSource(Stream fs)
        {
            using (var item = new System.Drawing.Bitmap(fs))
            {
                var width       = (uint)item.Width;
                var height      = (uint)item.Height;
                var pixelFormat = item.PixelFormat;
                var bpp         = GetBpp(pixelFormat);

                var uncompressedSize = bpp * width * height;

                var zeroMipmap = new MgImageMipmap
                {
                    Offset = 0,
                    Width  = width,
                    Height = height,
                    Size   = uncompressedSize,
                };

                return(new MgImageSource
                {
                    Format = DetermineFormat(pixelFormat),
                    Width = width,
                    Height = height,
                    Mipmaps = new[] { zeroMipmap },
                    Size = uncompressedSize,
                });
            }
        }
Пример #2
0
        public MgImageSource DetermineSource(Stream fs)
        {
            FreeImageAPI.FIBITMAP dib = FreeImageAPI.FIBITMAP.Zero;
            try
            {
                var format = FreeImageAPI.FREE_IMAGE_FORMAT.FIF_UNKNOWN;
                dib = FreeImageAPI.FreeImage.LoadFromStream(fs, ref format);

                if (dib.IsNull)
                {
                    throw new InvalidOperationException("Image data invalid");
                }

                var imageType = FreeImageAPI.FreeImage.GetImageType(dib);
                var colorType = FreeImageAPI.FreeImage.GetColorType(dib);
                var redMask   = FreeImageAPI.FreeImage.GetRedMask(dib);
                var greenMask = FreeImageAPI.FreeImage.GetGreenMask(dib);
                var blueMask  = FreeImageAPI.FreeImage.GetRedMask(dib);
                var bpp       = FreeImageAPI.FreeImage.GetBPP(dib);
                var width     = FreeImageAPI.FreeImage.GetWidth(dib);
                var height    = FreeImageAPI.FreeImage.GetHeight(dib);
                var imageSize = FreeImageAPI.FreeImage.GetDIBSize(dib);

                var uncompressedSize = bpp * width * height;

                var zeroMipmap = new MgImageMipmap
                {
                    Offset = 0,
                    Width  = width,
                    Height = height,
                    Size   = uncompressedSize,
                };

                var imgSource = new MgImageSource
                {
                    Format  = DetermineFormat(imageType, colorType, bpp, redMask, greenMask, blueMask),
                    Width   = width,
                    Height  = height,
                    Mipmaps = new[] { zeroMipmap },
                    Size    = uncompressedSize,
                };
                return(imgSource);
            }
            finally
            {
                if (!dib.IsNull)
                {
                    FreeImageAPI.FreeImage.UnloadEx(ref dib);
                }
            }
        }
Пример #3
0
 public KTXFaceData(uint faceIndex, uint noOfMipmaps)
 {
     FaceIndex = faceIndex;
     Mipmaps   = new MgImageMipmap[noOfMipmaps];
 }