Example #1
0
        protected override async Task ServeFile(HttpRequest request)
        {
            string requestedFile = request.Path.Remove(0, virtualRoot.Length).TrimStart('/');
            int    eventId;

            if (!int.TryParse(requestedFile, out eventId))
            {
                request.SetStatusCode(HttpStatusCode.BadRequest);
                return;
            }

            SelectQuery <Event> query = new SelectQuery <Event>()
                                        .Where <SelectQuery <Event> >("event_id", eventId);

            Event evt = (await Program.MySql().Execute(query)).FirstOrDefault();

            byte[] data = await ReadFile(request, requestedFile + ".png");

            if (data == null)
            {
                // request.SetStatusCode(HttpStatusCode.NotFound);
                // return;
                data = File.ReadAllBytes("app/eventimg/default.png");
            }

            MemoryStream imageStream = new MemoryStream(data);


            MyStamp stamp = new MyStamp()
            {
                Opacity = 100,
                Shadow  = true
            };

            Stream watermarked = stamp.ApplyStamp(imageStream, evt.Organizer.FullName);

            byte[] watermarkedData = new byte[watermarked.Length];
            watermarked.Read(watermarkedData, 0, (int)watermarked.Length);

            // Set the appropriate Content-Type
            request.SetContentTypeByExtension(ContentType.Image, "png");

            // If we managed to read the file, first set the headers
            request.SetStatusCode(HttpStatusCode.OK);

            // Then write the file to the response stream
            await request.Write(watermarkedData);
        }
        protected override async Task ServeFile(HttpRequest request)
        {
            string requestedFile = request.Path.Remove(0, virtualRoot.Length).TrimStart('/');
            int    eventId;

            if (!int.TryParse(requestedFile, out eventId))
            {
                request.SetStatusCode(HttpStatusCode.BadRequest);
                return;
            }

            byte[] data = await ReadFile(request, requestedFile + ".png");

            if (data == null)
            {
                // request.SetStatusCode(HttpStatusCode.NotFound);
                // return;
                data = File.ReadAllBytes("app/eventimg/default.png");
            }

            MemoryStream imageStream = new MemoryStream(data);

            Stream resized = MyStamp.ResizeImage(imageStream, width, height);

            byte[] watermarkedData = new byte[resized.Length];
            resized.Read(watermarkedData, 0, (int)resized.Length);

            // Set the appropriate Content-Type
            request.SetContentTypeByExtension(ContentType.Image, "png");

            // If we managed to read the file, first set the headers
            request.SetStatusCode(HttpStatusCode.OK);

            // Then write the file to the response stream
            await request.Write(watermarkedData);
        }