protected virtual string Resize(string id, Func <Image> factory, int width, int height) { var fileName = default(string); if (FileMetaDataStore.Exists(PREFIX, id, out fileName)) { return(fileName); } using (KeyLock.Lock(id)) { if (FileMetaDataStore.Exists(PREFIX, id, out fileName)) { return(fileName); } using (var image = new Bitmap(width, height)) { using (var graphics = Graphics.FromImage(image)) { graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; this.Resize(graphics, factory, width, height); } using (var stream = new MemoryStream()) { image.Save(stream, ImageFormat.Png); stream.Seek(0, SeekOrigin.Begin); return(FileMetaDataStore.Write(PREFIX, id, stream)); } } } }
protected virtual string Resize(string id, Func <Image> factory, int width, int height) { var fileName = default(string); if (FileMetaDataStore.Exists(PREFIX, id, out fileName)) { return(fileName); } //TODO: Setting throwOnTimeout = false so we ignore synchronization timeout. //TODO: I think there exists a deadlock bug in KeyLock but I haven't been able to prove it. using (KeyLock.Lock(id, TIMEOUT, false)) { if (FileMetaDataStore.Exists(PREFIX, id, out fileName)) { return(fileName); } using (var image = new Bitmap(width, height)) { using (var graphics = Graphics.FromImage(image)) { graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; this.Resize(graphics, factory, width, height); } using (var stream = new MemoryStream()) { image.Save(stream, ImageFormat.Png); stream.Seek(0, SeekOrigin.Begin); return(FileMetaDataStore.Write(PREFIX, id, stream)); } } } }
protected virtual void Save(string id, WaveFormGenerator.WaveFormGeneratorData data) { try { using (var stream = new MemoryStream()) { Serializer.Instance.Write(stream, data); stream.Seek(0, SeekOrigin.Begin); FileMetaDataStore.Write(PREFIX, id, stream); stream.Seek(0, SeekOrigin.Begin); } } catch (Exception e) { Logger.Write(this, LogLevel.Warn, "Failed to save wave form: {0}", e.Message); } }
private ImageSource Render(LibraryHierarchyNode libraryHierarchyNode, DrawingVisual visual, int width, int height) { var target = new RenderTargetBitmap(width, height, DPIX, DPIY, PixelFormats.Pbgra32); target.Render(visual); var encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(target)); using (var stream = new MemoryStream()) { encoder.Save(stream); stream.Seek(0, SeekOrigin.Begin); FileMetaDataStore.Write(PREFIX, this.GetImageId(libraryHierarchyNode, width, height), stream); stream.Seek(0, SeekOrigin.Begin); } target.Freeze(); return(target); }