// For export to Report. //public static Bitmap CreateBitmap(string filename, bool ignoreAlpha = false) //{ // using (var stream = File.OpenRead(filename)) // { // return CreateBitmap(stream, filename, 0, -1, -1, ignoreAlpha); // } //} public static Bitmap CreateBitmap(Stream stream, string filename, int depthSlice = 0, int width = -1, int height = -1, bool ignoreAlpha = false) { if (stream == null) { return(null); } var extension = Path.GetExtension(filename)?.ToLower(); if (extension == ".png") { // TODO: rescale the bitmap to specified width/height. return((Bitmap)Image.FromFile(filename, true)); } if (extension == ".dds") { uint fourCC = 0; DXGI_FORMAT dxgiFormat; var pixelChannel = ReadTextureFile(stream, depthSlice, ref width, ref height, out fourCC, out dxgiFormat); if (pixelChannel == null) { return(null); } try { return(DxtUtilTexture.DecompressTextureToBitmap(pixelChannel, width, height, ignoreAlpha, fourCC, dxgiFormat)); } catch { return(null); } } return(null); }
public static ImageSource CreateImage(string filename, int depthSlice, int width, int height, bool ignoreAlpha = false, IPixelEffect effect = null) { var extension = Path.GetExtension(filename).ToLower(); if (extension == ".png") { // TODO: rescale the bitmap to specified width/height. try { return(ImageHelper.ConvertBitmapToBitmapImage((Bitmap)Image.FromFile(filename, true))); } catch { return(null); } } else if (extension == ".dds") { uint fourCC; DXGI_FORMAT dxgiFormat; var pixelChannel = ReadTextureFile(filename, depthSlice, ref width, ref height, out fourCC, out dxgiFormat); if (pixelChannel == null) { return(null); } try { if (fourCC == (uint)DDS_FOURCC.DXT3) { // return DxtUtilTexture.DecompressDxt3TextureToImageSource(pixelChannel, width, height, ignoreAlpha, effect); } if (fourCC == (uint)DDS_FOURCC.DXT3 || fourCC == (uint)DDS_FOURCC.DXT5) { return(DxtUtilTexture.DecompressDxt5TextureToImageSource(pixelChannel, width, height, ignoreAlpha, effect, dxgiFormat)); } if (fourCC == (uint)DDS_FOURCC.DX10) { return(DxtUtilTexture.DecompressDxt5TextureToImageSource(pixelChannel, width, height, ignoreAlpha, effect, dxgiFormat)); // final texture uses premultiplied alpha ???? } } catch { return(null); } } return(null); }
public static Bitmap CreateBitmap(string filename, int depthSlice, int width, int height, bool ignoreAlpha = false) { var extension = Path.GetExtension(filename).ToLower(); if (extension == ".png") { // TODO: rescale the bitmap to specified width/height. return((Bitmap)Image.FromFile(filename, true)); } if (extension == ".dds") { uint fourCC; DXGI_FORMAT dxgiFormat; var pixelChannel = ReadTextureFile(filename, depthSlice, ref width, ref height, out fourCC, out dxgiFormat); if (pixelChannel == null) { return(null); } try { if (fourCC == (uint)DDS_FOURCC.DXT3) { return(DxtUtilTexture.DecompressDxt5TextureToBitmap(pixelChannel, width, height, ignoreAlpha, dxgiFormat)); } if (fourCC == (uint)DDS_FOURCC.DXT3 || fourCC == (uint)DDS_FOURCC.DXT5) { return(DxtUtilTexture.DecompressDxt5TextureToBitmap(pixelChannel, width, height, ignoreAlpha, dxgiFormat)); } if (fourCC == (uint)DDS_FOURCC.DX10) { // final texture uses premultiplied alpha ???? return(DxtUtilTexture.DecompressDxt5TextureToBitmap(pixelChannel, width, height, ignoreAlpha, dxgiFormat)); //return null; // TODO: load the Dx10 texture. } } catch { return(null); } } return(null); }
public static ImageSource CreateImage(Stream stream, int depthSlice, int width, int height, bool ignoreAlpha = false, IPixelEffect effect = null) { if (stream == null) { return(null); } uint fourCC = 0; DXGI_FORMAT dxgiFormat; var pixelChannel = ReadTextureFile(stream, depthSlice, ref width, ref height, out fourCC, out dxgiFormat); if (pixelChannel == null) { return(null); } try { return(DxtUtilTexture.DecompressTextureToImageSource(pixelChannel, width, height, ignoreAlpha, effect, fourCC, dxgiFormat)); } catch { return(null); } }