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(); }
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)); }