Показать изображение с помощью C # - PullRequest
1 голос
/ 28 января 2011

Я использую mvc2, и я хотел бы использовать действие в контроллере, например ShowSmallImage), и когда я набираю www.url.com/ShowSmallImage, что в браузере выводится изображение.

Я пробовал что-то вроде этого:

public Bitmap CreateThumbnail()
        {
            Image img1 = Image.FromFile(@"C:...\Uploads\Photos\178.jpg");

            int newWidth = 100;
            int newHeight = 100;
            double ratio = 0;

            if (img1.Width > img1.Height)
            {
                ratio = img1.Width / (double)img1.Height;
                newHeight = (int)(newHeight / ratio);
            }
            else
            {
                ratio = img1.Height / (double)img1.Width;
                newWidth = (int)(newWidth / ratio);
            }

            //a holder for the result 
            Bitmap result = new Bitmap(newWidth, newHeight);

            //use a graphics object to draw the resized image into the bitmap 
            using (Graphics graphics = Graphics.FromImage(result))
            {
                //set the resize quality modes to high quality 
                graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                //draw the image into the target bitmap 
                graphics.DrawImage(img1, 0, 0, result.Width, result.Height);
            }

            return result;
        }

В результате я получаю только System.Drawing.Bitmap в браузере. Я полагаю, мне нужно установить тип ответа / содержимого страницы, но я не знаю, как это сделать ...

Спасибо
Ile

Ответы [ 2 ]

3 голосов
/ 28 января 2011

Создайте файл результата и верните поток в растровое изображение и установите тип контента:

    private FileResult RenderImage()
    {   
        MemoryStream stream = new MemoryStream();
        var bitmap = CreateThumbnail();
        bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
        Byte[] bytes = stream.ToArray();
        return File(bytes, "image/png");

    }
1 голос
/ 28 января 2011

В контроллере, скажем, ResourceController, вы можете иметь Action, который возвращает FileResult. Вот так

    public FileResult Thumbnail()
    {
        var bitmap = // Your method call which returns a Bitmap

        var ms = new MemoryStream();
        bitmap.Save(ms, ImageFormat.Png);
        return new FileStreamResult(ms, "image/png");
    }

Тогда вы можете позвонить http://www.mysite.com/Resource/Thumbnail.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...