Пример #1
0
        // 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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
            }
        }