Esempio n. 1
0
        public void JpegDecoder_IsNotBoundToSinglePixelType <TPixel>(TestImageProvider <TPixel> provider)
            where TPixel : struct, IPixel <TPixel>
        {
            if (SkipTest(provider))
            {
                return;
            }

            // For 32 bit test enviroments:
            provider.Configuration.MemoryAllocator = ArrayPoolMemoryAllocator.CreateWithModeratePooling();

            using (Image <TPixel> image = provider.GetImage(JpegDecoder))
            {
                image.DebugSave(provider);

                provider.Utility.TestName = DecodeBaselineJpegOutputName;
                image.CompareToReferenceOutput(ImageComparer.Tolerant(BaselineTolerance), provider, appendPixelTypeToFileName: false);
            }

            provider.Configuration.MemoryAllocator.ReleaseRetainedResources();
        }
Esempio n. 2
0
        internal static void RunBufferCapacityLimitProcessorTest <TPixel>(
            this TestImageProvider <TPixel> provider,
            int bufferCapacityInPixelRows,
            Action <IImageProcessingContext> process,
            object testOutputDetails = null,
            ImageComparer comparer   = null)
            where TPixel : unmanaged, IPixel <TPixel>
        {
            comparer ??= ImageComparer.Exact;
            using Image <TPixel> expected = provider.GetImage();
            int width = expected.Width;

            expected.Mutate(process);

            var allocator = ArrayPoolMemoryAllocator.CreateDefault();

            provider.Configuration.MemoryAllocator = allocator;
            allocator.BufferCapacityInBytes        = bufferCapacityInPixelRows * width * Unsafe.SizeOf <TPixel>();

            using Image <TPixel> actual = provider.GetImage();
            actual.Mutate(process);
            comparer.VerifySimilarity(expected, actual);
        }
Esempio n. 3
0
        public static MemoryStream Resize(MemoryStream stream, int size, string format)
        {
            Configuration.Default.MemoryAllocator = ArrayPoolMemoryAllocator.CreateWithModeratePooling();

            try
            {
                stream.Seek(0, SeekOrigin.Begin);
                using (var image = Image.Load(stream))
                {
                    int width, height;
                    if (image.Width > image.Height)
                    {
                        width  = size;
                        height = image.Height * size / image.Width;
                    }
                    else
                    {
                        width  = image.Width * size / image.Height;
                        height = size;
                    }

                    image.Mutate(x => x
                                 .Resize(width, height));

                    var mstream = new MemoryStream();
                    image.Save(mstream,
                               format.Contains("png")
                            ? (IImageFormat)PngFormat.Instance
                            : JpegFormat.Instance);
                    return(mstream);
                }
            }
            finally
            {
                Configuration.Default.MemoryAllocator.ReleaseRetainedResources();
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Configures the function with  injected services.
        /// </summary>
        /// <param name="builder">The function host builder.</param>
        public override void Configure(IFunctionsHostBuilder builder)
        {
            //  Registers the ILogger instance
            builder.Services.AddLogging(loggingBuilder =>
            {
                loggingBuilder.AddApplicationInsights();
                loggingBuilder.AddFilter("EnrichmentPipeline", LogLevel.Trace);
            });

            // Register services
            builder.Services.AddSingleton <ISystemInfoService, SystemInfoService>(isp => new SystemInfoService(typeof(Startup).Assembly));
            builder.Services.AddSingleton(isp => new StaticTelemetryProperties(isp.GetRequiredService <ISystemInfoService>())
            {
                ComponentName      = typeof(Startup).Namespace,
                HostingEnvironment = "Functions",
                HostId             = Environment.MachineName,
            });
            builder.Services.AddSingleton <ITelemetryInitializer, TelemetryInitializer>();

            builder.Services.AddApplicationInsightsTelemetry();

            // Configure ImageSharp array pooling
            Configuration.Default.MemoryAllocator = ArrayPoolMemoryAllocator.CreateWithModeratePooling();
        }
Esempio n. 5
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            //Configuration variable declaration
            string mailAccount,
                   mailPassword,
                   mailSenderAccount,
                   mailSenderName,
                   mailServer,
                   databaseSecret;
            short mailPort;
            bool  mailTLS;

            mailAccount       = Configuration[Constants.Configuration.MailAccount];
            mailPassword      = Configuration[Constants.Configuration.MailSecret];
            mailPort          = Convert.ToInt16(Configuration[Constants.Configuration.MailPort]);
            mailTLS           = Convert.ToBoolean(Configuration[Constants.Configuration.MailTLS]);
            mailSenderAccount = Configuration[Constants.Configuration.MailSenderAccount];
            mailSenderName    = Configuration[Constants.Configuration.MailSenderName];
            mailServer        = Configuration[Constants.Configuration.MailServer];
            databaseSecret    = Configuration[Constants.Configuration.DatabaseSecret];

            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            var builder = new SqlConnectionStringBuilder(Configuration.GetConnectionString("default"))
            {
                Password = databaseSecret
            };

            services.AddDbContext <DatabaseContext>(options => options.UseSqlServer(builder.ConnectionString));

            services.ConfigureApplicationCookie(options =>
            {
                // Cookie settings
                options.Cookie.HttpOnly   = true;
                options.Cookie.Expiration = TimeSpan.FromDays(1);
                // If the LoginPath isn't set, ASP.NET Core defaults
                // the path to /Account/Login.
                options.LoginPath = "/Account/Login";
                // If the AccessDeniedPath isn't set, ASP.NET Core defaults
                // the path to /Account/AccessDenied.
                options.AccessDeniedPath  = "/Account/AccessDenied";
                options.SlidingExpiration = true;
            });

            services.AddIdentity <User, IdentityRole>(config =>
            {
                config.Password.RequiredLength               = 6;
                config.Password.RequireDigit                 = false;
                config.Password.RequireUppercase             = false;
                config.Password.RequireNonAlphanumeric       = false;
                config.User.RequireUniqueEmail               = true;
                config.SignIn.RequireConfirmedEmail          = true;
                config.Tokens.EmailConfirmationTokenProvider = "emailconfirmation";
            })
            .AddEntityFrameworkStores <DatabaseContext>()
            .AddDefaultTokenProviders()
            .AddTokenProvider <EmailConfirmationTokenProvider <User> >("emailconfirmation");

            services.Configure <DataProtectionTokenProviderOptions>(opt =>
                                                                    opt.TokenLifespan = TimeSpan.FromHours(2));
            services.Configure <EmailConfirmationTokenProviderOptions>(opt =>
                                                                       opt.TokenLifespan = TimeSpan.FromDays(3));

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            services.AddOData();

            services.AddMailKit(optionBuilder =>
            {
                optionBuilder.UseMailKit(new MailKitOptions()
                {
                    Server      = mailServer,
                    Port        = mailPort,
                    SenderName  = mailSenderName,
                    SenderEmail = mailSenderAccount,
                    Account     = mailAccount,
                    Password    = mailPassword,
                    Security    = mailTLS
                });
            });

            services.AddDefaultAWSOptions(Configuration.GetAWSOptions());
            services.AddAWSService <IAmazonS3>();

            services.AddSingleton(Configuration);

            SixLabors.ImageSharp.Configuration.Default.MemoryAllocator = ArrayPoolMemoryAllocator.CreateWithModeratePooling();

            services.AddOptions <CaptchaSettings>().Bind(Configuration.GetSection("Captcha"));
            services.AddTransient <CaptchaVerificationService>();
        }
Esempio n. 6
0
 static ImageUtils()
 {
     Configuration.Default.MemoryAllocator = ArrayPoolMemoryAllocator.CreateWithModeratePooling();
 }
Esempio n. 7
0
 static IndexingCore()
 {
     Configuration.Default.MemoryAllocator = ArrayPoolMemoryAllocator.CreateWithModeratePooling(); // Used to override the default and prevent memory from purposely persisting. See here for more details https://docs.sixlabors.com/articles/imagesharp/memorymanagement.html
 }