Dirty solution to add DDS BC7 write/read support to .NET using PAINT.NET plugin.
This project is pdn-ddsfiletype-plus plugin for Paint.NET and last open-sourced version of Paint.NET 3.36.7 stripped down to necessary elements.
usingPaintDotNet;usingDdsFileTypePlus;voidMain(){progressBar1.Minimum=0;progressBar1.Maximum=100;progressBar1.Value=0;Surfacesurface=DdsFile.Load(@"S:\testDDS\BC7.dds");//get Paint.NET SurfaceSystem.Drawing.Bitmapbitmap=surface.CreateAliasedBitmap();// convert to BitmapMagickImagemagickImage=newMagickImage(bitmap);// convert to Magick.NET MagickImageNetVips.ImagevipsImage;using(varstream=newMemoryStream()){bitmap.Save(stream,System.Drawing.Imaging.ImageFormat.Png);vipsImage=Image.NewFromBuffer(stream.ToArray());// convert to NetVips Image}// do something with imagesSystem.Drawing.BitmapprocessedBitmap=magickImage.ToBitmap();SurfaceprocessedSurface=Surface.CopyFromBitmap(processedBitmap);System.IO.FileStreamfileStream=newSystem.IO.FileStream(@"S:\testDDS\result.dds",System.IO.FileMode.Create);DdsFile.Save(fileStream,DdsFileFormat.BC7,DdsErrorMetric.Perceptual,BC7CompressionMode.Fast,cubeMap:true,generateMipMaps:true,ResamplingAlgorithm.Bilinear,processedSurface,ProgressChanged);fileStream.Close();}privatevoidProgressChanged(objectsender,ProgressEventArgse){progressBar1.Value=(int)Math.Round(e.Percent);}