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, }); } }
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); } } }
public KTXFaceData(uint faceIndex, uint noOfMipmaps) { FaceIndex = faceIndex; Mipmaps = new MgImageMipmap[noOfMipmaps]; }