Exemplo n.º 1
0
        private Bitmap resizeImageToBitmap(string trackingId, Image image, int width, int height)
        {
            var innerRect = ResizeMath.KeepRatio(image.Width, image.Height, width, height);

            _log.info(trackingId, () => $"resize  {image.Width}x{image.Height} --> {width}x{height}  =  [{innerRect.Top} {innerRect.Left} {innerRect.Width}x{innerRect.Height}]");

            var destImage = new Bitmap(width, height);

            destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);

            using (var graphics = Graphics.FromImage(destImage))
            {
                graphics.CompositingMode    = CompositingMode.SourceCopy;
                graphics.CompositingQuality = CompositingQuality.HighQuality;
                graphics.InterpolationMode  = InterpolationMode.HighQualityBicubic;
                graphics.SmoothingMode      = SmoothingMode.HighQuality;
                graphics.PixelOffsetMode    = PixelOffsetMode.HighQuality;

                using (var wrapMode = new ImageAttributes())
                {
                    wrapMode.SetWrapMode(WrapMode.TileFlipXY);
                    graphics.DrawImage(image, innerRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode);
                }

                fillMargins(graphics, width, height, innerRect, Brushes.Black);
            }

            return(destImage);
        }
Exemplo n.º 2
0
 public void With_same_dimensions_They_are_kept()
 {
     Assert.IsTrue(ResizeMath
                   .KeepRatio(300, 200, 300, 200)
                   .SameAs(0, 0, 300, 200));
 }
Exemplo n.º 3
0
 public void With_different_ratio_X_ration_is_adjusted()
 {
     Assert.IsTrue(ResizeMath
                   .KeepRatio(300, 200, 280, 100)
                   .SameAs(65, 0, 150, 100));
 }
Exemplo n.º 4
0
 public void With_different_ratio_Y_ration_is_adjusted()
 {
     Assert.IsTrue(ResizeMath
                   .KeepRatio(300, 200, 75, 75)
                   .SameAs(0, 12, 75, 50));
 }
Exemplo n.º 5
0
 public void It_does_not_scale_up()
 {
     Assert.IsTrue(ResizeMath
                   .KeepRatio(300, 200, 400, 300)
                   .SameAs(50, 50, 300, 200));
 }
Exemplo n.º 6
0
 public void With_same_ratio_Destination_dimensions_are_kept()
 {
     Assert.IsTrue(ResizeMath
                   .KeepRatio(300, 200, 150, 100)
                   .SameAs(0, 0, 150, 100));
 }