2012-01-13 4 views
1

Я конвертирую код Base64 в изображение, и я использую следующий способ сохранения и отображения этого изображения.Отображение изображения в ASP.NET C#

var kpin = Base64ToImage(TextBox1.Text); 
kpin.Save(@"e:\myim.png"); 
Image1.ImageUrl = @"e:\myim.png"; 

и класс

public Image Base64ToImage(string base64String) 
{ 
    byte[] imageBytes = Convert.FromBase64String(base64String); 
    MemoryStream ms = new MemoryStream(imageBytes, 0, 
     imageBytes.Length); 
    ms.Write(imageBytes, 0, imageBytes.Length); 
    Image image = Image.FromStream(ms, true); 
    return image; 
} 

и этот процесс работает нормально, но мне нужно изображение не будет сохранено на жестком диске. Как отобразить это изображение напрямую, не сохраняя на жесткий диск и возвращая его.

ответ

1

Вместо установки Image1.ImageURL на пути вашего изображения, вы можете вместо этого сделать одну из нескольких вещей:

  1. Используйте тег IMG с данными Base64 в нем непосредственно - http://www.sweeting.org/mark/blog/2005/07/12/base64-encoded-images-embedded-in-html Не все браузеры поддержите это.
  2. Создайте действие или веб-форму (в зависимости от того, используете ли вы ASP.NET MVC или нет), который принимает в качестве входных данных все необходимое для извлечения или генерации данных с кодировкой Base64, а затем устанавливает заголовки ответов для правильной работы (image/png или что-то еще) и записать изображение непосредственно в Response.OutputStream (или использовать ContentResult в ASP.NET MVC). Тонны примеров через Stackoverflow о том, как это сделать.

+0

Спасибо большое.! Это сработало для меня! –

0

Не связывайтесь с объектом изображения на всех, и просто сделать это прямой:

public void Base64ToResponse(string base64String) 
{ 
    Response.ContentType = "text/png"; //or whatever... 
    byte[] imageBytes = Convert.FromBase64String(base64String); 
    Response.OutputStream(imageBytes, 0, imageBytes.Length); 
} 
Смежные вопросы