public void CompressBlob(ImageData image) { byte[] originalImage; using (var memoryStream = new MemoryStream()) { image.BinaryData.OpenRead().CopyTo(memoryStream); originalImage = memoryStream.ToArray(); } byte[] compressedResult = {}; switch (image.MimeType) { case "image/jpeg": compressedResult = _imageCompressor.MakeCompressedJpg(originalImage); break; case "image/png": compressedResult = _imageCompressor.MakeCompressedPng(originalImage); break; default: _log.Error("!unknown file:" + image.MimeType); break; } if (ImageCompressor.OptimizedImagesCount % 50 == 0 && ImageCompressor.OptimizedImagesCount != 0) { OnStatusChanged($"Updated {ImageCompressor.OptimizedImagesCount}..."); } if (compressedResult == null) { return; } //Create the Compressed Blob. var writableImage = image.CreateWritableClone() as ImageFile; if (writableImage != null) { var blob = _blobResolver.CreateBlob(writableImage.BinaryDataContainer, Path.GetExtension(image.Name)); using (var s = blob.OpenWrite()) { var b = new BinaryWriter(s); b.Write(compressedResult); b.Flush(); } writableImage.BinaryData = blob; _writeRepo.Save(writableImage, SaveAction.Publish, AccessLevel.NoAccess); } }