Как я могу использовать ImageFormatConverter.ConvertFromString для преобразования строки, содержащей ответ HTML, в изображение?

Вот чего я добился:

в загрузке страницы

{
    panelmain.Controls.Add(abc);
    panelmain.Controls.Add(grid1);
    string toexport;
    toexport = RenderControl(panelmain);

    ImageFormatConverter imgc = new ImageFormatConverter();
    System.Drawing.Image convertedimage;
    convertedimage = (System.Drawing.Image) imgc.ConvertFromString(toexport);
    Response.ContentType = "image/jpg";
    Response.AppendHeader("Content-Disposition", "inline;filename=tm.jpeg");
    Response.BufferOutput = true;
    Response.Charset = "utf-8";
    Response.Write(convertedimage);
    Response.End();
    //form1.Controls.Add(abc);
}

public string RenderControl(Control ctrl)
{
    StringBuilder sb = new StringBuilder();
    StringWriter tw = new StringWriter(sb);
    HtmlTextWriter hw = new HtmlTextWriter(tw);
    ctrl.RenderControl(hw);
    Response.Write(sb);
    return sb.ToString();
}

Ошибка:

ImageFormatConverter не может конвертировать из System.String.

1 ответ

Решение

Возможно, вы неверно истолковали документацию ConvertFromString здесь, объяснение:

Вы используете ImageformatConverter класс, который наследует и переопределяет TypeConverter, Это означает, что ConvertFromString наследуется от суперкласса, но, поскольку вы не можете преобразовать строку в изображение (если у вас нет яркого воображения), этот метод всегда возвращает нуль (согласно документации) или выдает NotSupportedException, Это стандартное поведение базового класса, и переопределяющий класс может определять пользовательское поведение, которое в вашем случае не было выполнено.

Чтобы преобразовать строку, вам сначала нужно определить, что вы хотите. То есть строка это путь к изображению? Это кусок текста, и вы хотите сделать изображение из этого? Это строка в кодировке Base64, содержащая изображение? Это отрендеренная страница HTML или она содержит документ RTF? Получив ответ на эти вопросы, вы можете выбрать правильный конвертер или конструктор изображений.

РЕДАКТИРОВАТЬ: потому что ваш вопрос, кажется, о рендеринге HTML в виде изображения, проверьте этот пост в SO, как также упоминалось выше Rebecca Chernoff.

Другие вопросы по тегам