示例#1
0
        public void ChangeImageProbably(Image img, int mipMaps, ImgPixelFormat imgpixelFormat1, bool bool0)
        {
            var memoryStream = new MemoryStream();
            var binaryWriter = new BinaryWriter(memoryStream);

            mipMaps = ClampMipMaps(MipMapCount, img.Width, img.Height);

            //Generate mipmaps
            for (var i = 0; i < mipMaps; i++)
            {
                var bitmap =
                    KeyGenerator.ScaleImageFixedRatio(img, Math.Max(1, img.Width >> i), Math.Max(1, img.Height >> i));
                if (imgpixelFormat1 == ImgPixelFormat.Bgra32)
                {
                    var bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                                                     ImageLockMode.ReadWrite, bitmap.PixelFormat);
                    var array = new byte[bitmapData.Stride * bitmap.Height];
                    Marshal.Copy(bitmapData.Scan0, array, 0, array.Length);
                    bitmap.UnlockBits(bitmapData);
                    binaryWriter.Write(array);
                }
                else
                {
                    ZzTextureClass.smethod_16(bitmap, binaryWriter, imgpixelFormat1, bool0);
                }
            }
            MipMapCount = mipMaps;
            PixelFormat = imgpixelFormat1;
            Data        = memoryStream.ToArray();
        }
示例#2
0
        public Image GetImage()
        {
            var bitmap = new Bitmap(Size.Width, Size.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            if (PixelFormat == ImgPixelFormat.Bgra32)
            {
                var bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                                                 ImageLockMode.ReadWrite, bitmap.PixelFormat);
                Marshal.Copy(Data, 0, bitmapData.Scan0, bitmapData.Stride * bitmap.Height);
                bitmap.UnlockBits(bitmapData);
                var stream = new MemoryStream();
                bitmap.Save(stream, ImageFormat.Bmp);
                return(Image.FromStream(stream));
            }
            if (PixelFormat != ImgPixelFormat.Dxt1 && PixelFormat != ImgPixelFormat.Dxt3)
            {
                if (PixelFormat != ImgPixelFormat.Dxt5)
                {
                    throw new Exception("Can't decode DDS, Unknown format: " + PixelFormat);
                }
            }
            var unk = new ImageRelatedClass(bitmap);

            unk.method_4();
            var binaryReader = new BinaryReader(new MemoryStream(Data));

            ZzTextureClass.smethod_17(binaryReader, unk, PixelFormat);
            binaryReader.Close();
            unk.method_5(true);
            var stream2 = new MemoryStream();

            bitmap.Save(stream2, ImageFormat.Bmp);
            return(Image.FromStream(stream2));
        }