Ejemplo n.º 1
0
        public void DrawCore(string imagePath, WatermarkMode mode, Action <SKData> postAction)
        {
            Logger.LogDebug($"Watermark image file: {imagePath}");
            Logger.LogDebug($"Watermark mode: {mode.AsEnumName()}");

            using (var bmp = SKBitmap.Decode(imagePath))
            {
                using (var canvas = new SKCanvas(bmp))
                {
                    var imageSize = new Size(bmp.Width, bmp.Height);

                    DrawCore(canvas, imageSize, mode);
                }

                using (var img = SKImage.FromBitmap(bmp))
                    using (var data = img.Encode(CurrentImageFormat, Options.Quality))
                    {
                        if (data.IsNull())
                        {
                            throw new InvalidOperationException(InternalResource.InvalidOperationExceptionUnsupportedImageFormat);
                        }

                        postAction.Invoke(data);
                    }
            }
        }