public static void ExecuteMethod_CreateImageMediaFormats(string masterRelativeLocation, Bitmap bitmapData) { if (bitmapData == null) return; Size[] jpgSizes = new[] { // Wide screen format new Size(1280, 720), new Size(640, 360), // .. portrait alternatives, but not the biggest ones new Size(360, 640), // Standard screen format new Size(1024, 768), new Size(800, 600), new Size(640, 480), new Size(320, 240), new Size(160, 120), // .. portrait alternatives, but not the biggest ones new Size(480, 640), new Size(240, 320), new Size(120, 160), // Square icon format new Size(256, 256), new Size(128, 128), new Size(64, 64), new Size(32, 32), }; // Photos become still quite large on png => transparency issues need to be dealt with differently Size[] pngSizes = new Size[] { }; var sizesWithFormat = jpgSizes.Select(size => new {Format = ImageFormat.Jpeg, Size = size}). Union(pngSizes.Select(size => new {Format = ImageFormat.Png, Size = size})); foreach(var sizeWithFormat in sizesWithFormat) { var size = sizeWithFormat.Size; var format = sizeWithFormat.Format; string sizedFittingAllInLocation = GetSizedLocation(masterRelativeLocation, size, fittingAllIn: true, format:format); Bitmap fittingBitmap = ResizeImage(bitmapData, size, true, false, false); StoreToBlob(sizedFittingAllInLocation, fittingBitmap, format); string sizedCroppingLocation = GetSizedLocation(masterRelativeLocation, size, fittingAllIn: false, format: format); Bitmap croppedBitmap = ResizeImage(bitmapData, size, true, false, true); StoreToBlob(sizedCroppingLocation, croppedBitmap, format); } }