コード例 #1
0
ファイル: ImageResizer.cs プロジェクト: PocketAppZ/FoxTunes
        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));
                    }
                }
            }
        }
コード例 #2
0
ファイル: ImageResizer.cs プロジェクト: hainam2101/FoxTunes
        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));
                    }
                }
            }
        }
コード例 #3
0
 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);
     }
 }
コード例 #4
0
        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);
        }