Changes the size of a Layer. This filter can be used in several ways depending on the effect you wish to achieve.

There are five modes available for the ResizeFilter filter.

By default, images will not be enlarged if they are smaller than the target size. However, you can set the ResizeFilter.EnlargeImage property to true to allow enlargement.
Inheritance: ImageReplacementFilter
示例#1
0
文件: Image.cs 项目: dpawatts/zeus
        public string GetUrl(int width, int height, bool fill, DynamicImageFormat format)
        {
            Composition image = new Composition();
            image.ImageFormat = format;
            ImageLayer imageLayer = new ImageLayer();

            ZeusImageSource source = new ZeusImageSource();
            source.ContentID = ID;

            imageLayer.Source = source;

            ResizeFilter resizeFilter = new ResizeFilter();
            resizeFilter.Mode = fill ? ResizeMode.UniformFill : ResizeMode.Uniform;
            resizeFilter.Width = Unit.Pixel(width);
            resizeFilter.Height = Unit.Pixel(height);

            imageLayer.Filters.Add(resizeFilter);

            image.Layers.Add(imageLayer);

            return ImageUrlGenerator.GetImageUrl(image);

            /*old code replaced
             *
            return new DynamicImageBuilder()
                .WithLayer(
                    LayerBuilder.Image.SourceImage(this).WithFilter(FilterBuilder.Resize.To(width, height, fill)))
                .Url;
             */
        }
示例#2
0
        public void ResizeFilter_UseHeightResizeMode_CalculatedCorrectly()
        {
            FastBitmap bitmap = new FastBitmap("Filters\\Images\\Tulips.png", UriKind.Relative);

            ResizeFilter resizeFilter = new ResizeFilter();
            resizeFilter.Mode = ResizeMode.UseHeight;
            resizeFilter.Height = Unit.Pixel(200);

            resizeFilter.ApplyFilter(bitmap);

            Assert.AreEqual(300, bitmap.Width);
            Assert.AreEqual(200, bitmap.Height);
        }
示例#3
0
        public void ResizeFilter_UniformResizeModeWithDominantHeight_CalculatedCorrectly()
        {
            FastBitmap bitmap = new FastBitmap("Filters\\Images\\Tulips.png", UriKind.Relative);

            ResizeFilter resizeFilter = new ResizeFilter();
            resizeFilter.Mode = ResizeMode.Uniform;
            resizeFilter.Width = Unit.Pixel(200);
            resizeFilter.Height = Unit.Pixel(100);

            resizeFilter.ApplyFilter(bitmap);

            Assert.AreEqual(150, bitmap.Width);
            Assert.AreEqual(100, bitmap.Height);
        }
示例#4
0
        public void ResizeFilterInUseHeightModeCalculatesDimensionsCorrectly()
        {
            // Arrange.
            var bitmap = new FastBitmap(@"Resources\Tulips.png", UriKind.Relative);
            var resizeFilter = new ResizeFilter
            {
                Mode = ResizeMode.UseHeight,
                Height = Unit.Pixel(200)
            };

            // Act.
            resizeFilter.ApplyFilter(bitmap);

            // Assert.
            Assert.AreEqual(300, bitmap.Width);
            Assert.AreEqual(200, bitmap.Height);
        }
        public void ResizeFilterInUniformModeWithDominantWidthCalculatesDimensionsCorrectly()
        {
            // Arrange.
            var bitmap = new FastBitmap(@"Resources\Tulips.png", UriKind.Relative);
            var resizeFilter = new ResizeFilter
            {
                Mode = ResizeMode.Uniform,
                Width = Unit.Pixel(200),
                Height = Unit.Pixel(200)
            };

            // Act.
            resizeFilter.ApplyFilter(null, bitmap);

            // Assert.
            Assert.AreEqual(200, bitmap.Width);
            Assert.AreEqual(133, bitmap.Height);
        }
示例#6
0
        public string GetUrl(int width, int height, bool fill, DynamicImageFormat format, bool isResize)
        {
            //first construct the crop
            var imageSource = new ZeusImageSource();
            imageSource.ContentID = this.ID;

            if (this.Data == null)
                return "";

            // generate resized image url
            // set image format
            var dynamicImage = new SoundInTheory.DynamicImage.Composition();
            dynamicImage.ImageFormat = format;

            // create image layer wit ha source
            var imageLayer = new ImageLayer();
            imageLayer.Source = imageSource;

            // add filters
            if (!(TopLeftXVal == 0 && TopLeftYVal == 0 && CropWidth == 0 && CropHeight == 0))
            {
                var cropFilter = new CropFilter
                {
                    Enabled = true,
                    X = this.TopLeftXVal,
                    Y = this.TopLeftYVal,
                    Width = this.CropWidth,
                    Height = this.CropHeight
                };
                if (!isResize)
                    imageLayer.Filters.Add(cropFilter);
            }

            if (width > 0 && height > 0)
            {
                var resizeFilter = new ResizeFilter
                {
                    Mode = isResize ? ResizeMode.Uniform : ResizeMode.UniformFill,
                    Width = SoundInTheory.DynamicImage.Unit.Pixel(width),
                    Height = SoundInTheory.DynamicImage.Unit.Pixel(height)
                };
                imageLayer.Filters.Add(resizeFilter);
            }
            else if (width > 0)
            {
                var resizeFilter = new ResizeFilter
                {
                    Mode = ResizeMode.UseWidth,
                    Width = SoundInTheory.DynamicImage.Unit.Pixel(width)
                };
                imageLayer.Filters.Add(resizeFilter);
            }
            else if (height > 0)
            {
                var resizeFilter = new ResizeFilter
                {
                    Mode = ResizeMode.UseHeight,
                    Height = SoundInTheory.DynamicImage.Unit.Pixel(height)
                };
                imageLayer.Filters.Add(resizeFilter);
            }

            // add the layer
            dynamicImage.Layers.Add(imageLayer);

            // generate url
            return ImageUrlGenerator.GetImageUrl(dynamicImage);
        }